2011-06-03 71 views
0

我正在開發一個目標應用程序,用戶可以選中一個目標旁邊的框將其標記爲完整。我爲這個功能編寫了測試,但有些東西並不完全正確,因爲它一直在失敗。我最終感到厭倦,只寫了代碼,它的工作原理,但測試仍然失敗。我仍然在學習Rspec,所以你可以給我的任何建議都會有幫助。Rspec集成測試(涉及複選框)不會通過

測試

# @user has already been signed in 

describe "completing a goal" do 

    before(:each) do 
    @goal = Factory(:goal, :user => @user) 
    end 

    it "should set 'completed' attribute to true" do 
    visit edit_goal_path(@goal) 
    check('goal_completed') 
    click_button('goal_submit') 
    @goal.completed.should be_true 
    end 
end 

結果

Failures: 

1) Goals completing a goal should set 'completed' attribute to true 
Failure/Error: @goal.completed.should be_true 
    expected nil to be true 
# ./spec/requests/goals_spec.rb:81:in `block (3 levels) in <top (required)>' 

回答

1

如果你想這是一個集成測試,這將是更好地爲你的說法是對網頁的內容。喜歡的東西:

assert_text "Goal met on 1/1/2011"

如果你想堅持與模型斷言,我敢肯定,你只需要重新加載: @goal.reload.completed.should be_true

+0

固定的,謝謝!我不會把它放在控制器規範中,那麼如果我堅持完成。應該be_true,因爲它處理實際的控制器? – 2011-06-03 19:58:16