2011-05-02 31 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

相關問題