如何在单独的文件中提取FactoryGirl特征

时间:2014-06-12 02:06:52

标签: ruby-on-rails ruby refactoring factory-bot

我有一堆共享特征的工厂:

trait :with_images do
  after(:create) do |resource|
    resource.images << FactoryGirl.create(:image, imageable: resource)
    resource.enabled = true
    resource.save
  end
end

我想在单独的文件中提取它,但不是100%确定如何安排它。

1 个答案:

答案 0 :(得分:1)

可以全局定义特征,因此您可以在您喜欢的其他工厂中使用它们。您可以在 spec / factories 中创建一个新文件,例如 spec / factories / traits.rb 或其他内容:

定义您的全球特征:

FactoryGirl.define do
  trait :complete do
    complete false
  end
end

然后你会在另一个文件中,比如 spec / factories / user.rb ,这是一个使用这个特性的不同工厂:

FactoryGirl.define do
  factory :user do
    complete
  end
end

我不确定这是不是一个好主意,我的意思是,我认为它应该立即可见,特征是某个工厂的补充。它非常干净,但不太可读。