Rspec不会记忆对factorygirl对象所做的间接更改

时间:2012-12-06 23:34:03

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

我有一家工厂女工厂看起来像:

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

感谢您的聆听

0 个答案:

没有答案