0

アプリで機能が動作することを知っていても、失敗するテストがあります。thing私の本能は、私が作成したものを保存しようとするべきだと言っていますが、 assert_difference ブロックでこれを行う方法がわかりません.save。あなたが提供できるアドバイスをありがとう。

テスト:

test "should create thing" do
    assert_difference('thing.count') do
      post :create, thing: { thing_type_id: @thing.thing_type_id, name: @thing.name}
    end

出力:

 1) Failure:
test_should_create_thing(thingsControllerTest) [C:/../thing_controller_test.rb:20]:
"thing.count" didn't change by 1.
<3> expected but was
<2>.
4

1 に答える 1

2

データベースに状態が残っている可能性があるようです。つまり、 DB にはexpected but was <2>既に 2 つの があります。Thing

テスト間で DB の状態をクリアしてみてください。データベースに応じて、database_cleanergem をチェックしてください。

また、 の存在により、すでにオブジェクトを作成している可能性があります@thing。その場合、これは期待どおりに機能しています。

コントローラーを方程式から外して、法線をテストするだけでこれを確認できますThing::create

test "creates a new Thing" do
  assert_difference('Thing.count') do
    Thing.create thing_type_id: @thing.thing_type_id, name: @thing.name
  end
end
于 2013-05-06T16:16:49.707 に答える