FactoryGirl 将工厂传递给特征

FactoryGirl pass factory to trait

是否可以将工厂传递给特征?

鉴于以下特征

FactoryGirl.define do
  factory :foo do
    trait :with_user do

    end
  end
end

我想做类似的事情(伪代码)

FactoryGirl.create(:foo, :with_user(user))

我不久前就想通了,所以我想我应该 post 解决方案,以防万一有人遇到这个问题。

我使用瞬变和创建后挂钩来获得所需的结果。

create :foo, :with_user, user: create(:user)

FactoryGirl.define do
  factory :foo do
    trait :with_user do
      transient do
        user nil
      end
      after :create do |foo, evaluator|
        user = evaluator.user || create :user
      end
    end
  end
end