Rails FactoryGirrl实例与ActiceRecord实例不同



当我使用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

相关内容

  • 没有找到相关文章

最新更新