在FactoryGirl中使用"默认"特征以避免不必要的关联创建

Sam*_*and 9 ruby-on-rails factory-bot

是否可以在FactoryGirl中定义默认特征?如果我定义这样的工厂(其中question_response都属于问题):

factory :question_response do
  question
  work_history

  trait :open do
    question { FactoryGirl.create :question, question_type: 'open' }
  end
end
Run Code Online (Sandbox Code Playgroud)

当我这样做时FactoryGirl.create :question_response, :open,它将首先创建一个默认问题,然后在特征内创建另一个,这是一个不必要的操作.

理想情况下我想这样做:

factory :question_response do
  work_history

  trait :default do
    question { FactoryGirl.create :question, question_type: 'yes_no' }
  end

  trait :open do
    question { FactoryGirl.create :question, question_type: 'open' }
  end
end
Run Code Online (Sandbox Code Playgroud)

然后做的FactoryGirl.create :question将使用默认特征,但似乎不可能.

kub*_*oon 2

当我执行 FactoryGirl.create :question_response, :open 时,它将首先创建一个默认问题,然后在特征中创建另一个问题

这不是真的。如果您使用 指定特征question,它将在创建之前覆盖工厂行为,以便它不会创建默认问题。

我用FactoryGirl v4.5.0检查过