Rails FactoryGirl实例与ActiceRecord实例不同?

时间:2013-02-07 19:12:57

标签: ruby-on-rails-3 rspec factory-bot

当我使用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,那么它们不是同一个对象吗?

1 个答案:

答案 0 :(得分:2)

我认为你可能需要改变

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

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

顺便说一下,您可能想了解be_true

expect(foo.reload.bar).to be_true