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は、attribute1 が nil に設定されています。デバッガーを使用すると、テスト データベースに保存されている Capture に attribute1 が設定されていることがわかりますが、サブジェクトは設定されていないため、Image のコールバックが機能し、属性が親に伝達されていることがわかります。

after(:create) がコールバックされる前に rspec がオブジェクトの属性を記憶してしまい、更新できないようです。これはバグですか、それとも予期しない方法で使用していますか (または単に間違っていますか)?

聞いてくれてありがとう

4

0 に答える 0