我有一堆共享特征的工厂:
trait :with_images do
after(:create) do |resource|
resource.images << FactoryGirl.create(:image, imageable: resource)
resource.enabled = true
resource.save
end
end
我想在单独的文件中提取它,但不是100%确定如何安排它。
答案 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
我不确定这是不是一个好主意,我的意思是,我认为它应该立即可见,特征是某个工厂的补充。它非常干净,但不太可读。