如何从一个工厂获取另一个工厂内的属性?

How can I get attributes from one factory inside of another?

这是我在规格中使用的内容:

let(:family) { create :family } 
let(:picnic) { build :picnic, cook: family.dad, assistant: family.son }

它有效,但是,我更愿意将此逻辑移至 picnic_factory.rb 并在我的规范中使用 let(:picnic) { build :picnic } 。

Picnic 中有一个作用域可以检查 family.dad 和 family.son 是否对同一个 Family 是唯一的。我需要创建一个家庭工厂,然后我需要用它来创建一个野餐工厂。

伪代码:

FactoryGirl.define do
  FactoryGirl.create(:family) -> points towards family_factory.rb
  factory :picnic do 
    cook { family.dad }
    assistant { family.son }    
  end   
end 
  • 假设您已经定义了一个野餐工厂和一个家庭工厂。

(警告:未经测试的代码):

也许定义如下:

factory :family_picnic, parent: :picnic do
    family = create(:family)
    cook { family.dad }
    assistant { family.son }  
end

这样使用:

    FactoryBot.create(:family_picnic)