1
setup do
    @prayer = prayers(:one)
end

test "should update prayer count" do
    assert_difference('@prayer.count', 1) do
        get "update_counter", {:id => @prayer.id}
    end
    assert_redirected_to root_path
end

# Running tests:

counter updated and saved. Count is: 
1
F

Finished tests in 1.374664s, 0.7275 tests/s, 0.7275 assertions/s.

  1) Failure:
PrayersControllerTest#test_should_update_prayer_count [test/controllers/prayers_controller_test.rb:147]:
"@prayer.count" didn't change by 1.
Expected: 1
  Actual: 0

update_counter 機能は正常に動作し、正しく報告されていますが、テストは失敗します。@prayer 変数はデータベースを指していますか、それとも別のフィクスチャ オブジェクトを指していますか? @prayer = Prayer.find(1) も試しましたが、同じ結果です。何か案は?

フィクスチャ yml は次のとおりです。

one:
  id: 1
  prayer: Pray for nice weather
  count: 0
  user_id: 1

ありがとう。

4

1 に答える 1

1

メソッドを試すことができますreload

assert_difference('@prayer.reload.count', 1) do

これにより、Rails@prayerは DB から実際のデータを取得してリロードします。

于 2013-10-09T22:10:59.433 に答える