FactoryGirl——创​​建变量

FactoryGirl—creating variables

我有一个项目,工厂堆成这样:

FactoryGirl.define do
  factory :terms_document do
    created_by { FactoryGirl.create(:user) }
    updated_by { FactoryGirl.create(:user) }
    ...
  end
end

如何在一开始就创建一个我可以在整个工厂中使用的用户?

你可以在工厂文件中添加一个缓存方法:

def user
  @user ||= FactoryGirl.create(:user)
end

FactoryGirl.define do
  factory :terms_document do
    created_by user
    updated_by user
    ...
  end
end

更新:如果您需要不同的用户用于不同的工厂实例:

def user(term_document)
  @users ||= {}
  @users[term_document] ||= FactoryGirl.create(:user)
end

FactoryGirl.define do
  factory :terms_document do
    ...
    after(:build) do |term_document|
      created_by user(term_document)
      updated_by user(term_document)
    end
  end
end