0

我有一个工厂女孩工厂,看起来像:

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) 回调之前记住了对象属性,并且无法更新。这是一个错误还是我以意想不到的方式使用它(或者只是做错了)?

谢谢收听

4

0 回答 0