我有一个工厂女孩工厂,看起来像:
FactoryDefine do
factory :capture do
attribute1 nil
factory :capture_with_images do
after(:create) do
FactoryGirl.create(:image, capture: image)
end
end
end
创建图像对象时,它会通过回调更新其父对象中的属性 1。这工作正常。
我的 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
主题处将属性 1 设置为 nil。使用调试器,我可以看到存储在测试数据库中的 Capture 设置了属性 1,但没有设置主题,因此我知道我的 Image 中的回调正在工作并将属性传播给父级。
似乎 rspec 在 after(:create) 回调之前记住了对象属性,并且无法更新。这是一个错误还是我以意想不到的方式使用它(或者只是做错了)?
谢谢收听