1

FactoryGirl を使用してレコードを作成し、後でそのレコードを更新すると、factorygirl インスタンスが更新されないのはなぜですか? たとえば、次のファクトリと rspec テストがあるとします。

factory :foo do
  bar false
end

rspec テストの内部:

foo = FactoryGirl.create(:foo)
Foo.first.update_attribute(:bar, true)
expect(foo.bar).to eq(true) #foo.bar is false and will fail

foo.bar最後の行をパスに変更するFoo.first.barと、なぜ差異が発生するのでしょうか? FactoryGirl インスタンスはレコードに直接関連付けられていませんか? テストを実行するとexpect(foo).to eq(Foo.first)true が返されるので、それらは同じオブジェクトではありませんか?

4

1 に答える 1

2

私はあなたが変更する必要があるかもしれないと思います

expect(foo.bar).to eq(true)

expect(foo.reload.bar).to eq(true)

ちなみに、あなたはについて知りたいかもしれませんbe_true

expect(foo.reload.bar).to be_true
于 2013-02-07T19:16:08.960 に答える