我有一家工厂女工厂看起来像:
FactoryDefine do
factory :capture do
attribute1 nil
factory :capture_with_images do
after(:create) do
FactoryGirl.create(:image, capture: image)
end
end
end
创建图像对象时,它会通过回调更新其父对象中的attribute1。这很好。
我的rspec看起来像这样
describe Capture do
shared_examples "with images" do
it "has attribute assigned" do
expect(subject.attribute1).to be_present
end
end
describe do
subject { FactoryGirl.create(:capture_with_images) }
include_examples "with images"
end
end
问题?在expect(subject.attribute1).to be_present
,主题将attribute1设置为nil。使用调试器,我可以看到存储在测试数据库中的Capture具有attribute1设置,但不是主题,因此我知道我的Image中的回调正在工作并将属性传播到父级。
似乎rspec在回调之后(:create)回调之前会记住对象属性,并且无法更新。这是一个错误还是我以一种意想不到的方式使用它(或者只是做错了)?
感谢您的聆听