次のようなファクトリーガールファクトリーがあります。
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 がオブジェクトの属性を記憶してしまい、更新できないようです。これはバグですか、それとも予期しない方法で使用していますか (または単に間違っていますか)?
聞いてくれてありがとう