当我使用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,那么它们不是同一个对象吗?
我认为您可能需要更改
expect(foo.bar).to eq(true)
至
expect(foo.reload.bar).to eq(true)
顺便说一下,您可能想了解be_true
:
expect(foo.reload.bar).to be_true