2011-05-02 66 views
1

鉴于这种确认方法:绷工作,但不是在规格:Rails的3 + Rspec的

if (@bucket.confirmation_code == @code) 
     puts "OLAAA" 
     @bucket.toggle!(:confirmation) 
     @bucket.save 
     flash[:success] = "Successfully confirmed bucket." 
     redirect_to bucket_url(@bucket) 
    else 
     flash[:fail] = "Error confirming bucket." 
     redirect_to bucket_url(@bucket) 
    end 

我有一个规范的测试,如果按下该键则确认属性,但即使在控制器,似乎一切正在工作(confirmation == true),测试失败(confirmation == false而不是true)。

测试是:

it "should have a confirmation URL" do 
     @attr3 = {:email => "[email protected]", :confirmation_code => "ola123"} 
     post :create, :bucket => @attr3 
     @bucket = Bucket.last 
     post :confirm, :id => @bucket.id, :code => "ola123" 
     @bucket.save 
     @bucket.confirmation.should == true 
     end 

回答

1

代替@bucket.save,这是不必要的,因为你的控制器方法已经做到这一点,做@bucket.reload,这将重新查询当前值的数据库(因为它改变你首先分配了@bucket = Bucket.last)。那么你的confirmation值应该返回true

相关问题