2012-06-21 41 views
1

我控制器(用户控制器)RSpec的测试失败显示了Flash消息

def reset_password 
     @user = User.find_by_reset_code(params[:reset_code]) unless params[:reset_code].nil?  

     if request.post?  
     if @user && @user.update_attributes(:password => params[:user][:password], :password_confirmation => params[:user][:password_confirmation]) 
      self.current_user = @user 
      @user.delete_reset_code 
      flash[:success] = t('helpers.password_reset_successful') 
      render :template => "sessions/new" 
     else 
      flash[:error] = t('helpers.password_reset_error') 
      redirect_to root_path 
     end 
     end 
    end 

我想测试我做...

it "should have a flash message" do 
    @attr = { :password => "newpassword", :password_confirmation => "newpassword" } 
    @user.reset_code = Digest::SHA1.hexdigest(Time.now.to_s.split(//).sort_by {rand}.join) 

    post :reset_password, :reset_code => @user.reset_code, :password => @attr[:password], :password_confirmation => @attr[:password_confirmation] 
    flash[:success].should == I18n.t('helpers.password_reset_successful') 
    end 

但我在Rspec的已经例外 -

Failure/Error: flash[:success].should == I18n.t('helpers.password_reset_successful') 
     expected: "Password successfully updated" 
      got: nil (using ==) 

怎么了?

回答

2

纠正你的PARAMS:

post :reset_password, :reset_code => @user.reset_code, :user => { :password => @attr[:password], :password_confirmation => @attr[:password_confirmation] } 
+0

不要工作。错误依然存在 – user1466717

+0

好的,保存你的用户在发布之前或使用相同的应该收到你的前一个问题 – apneadiving

+0

你能推荐一本关于RSpec的好书或网站吗? – user1466717