我在<Rails-root>/spec/factories/models.rb
中定义了一个工厂:
FactoryGirl.define do
factory :model do
id 1
association :organization, factory: :aureso
name "Default Model"
factory :serie_1 do
id 2
name 'serie_1'
end
factory :serie_2 do
id 3
name 'serie_2'
end
factory :serie_3 do
id 4
name 'serie_3'
end
end
end
我希望获得为班级Model
定义的所有工厂。
我可以使用FactoryGirl.factories
获取所有类的工厂定义,是的,我可以使用map / reduce实现上述目标。但我想知道是否有任何辅助方法来获取模型类的所有定义。
答案 0 :(得分:4)
从the source可以看出,当前版本的factory_girl(4.5.0)中的FactoryGirl
类没有方便的方法来列出创建给定类实例的工厂。
这不是一个非常令人兴奋的答案,所以让我们以不方便的方式做到这一点! FactoryGirl.factories
返回一个FactoryGirl::Registry
,它再次没有方便的方式列出工厂,但确实有一个@items
哈希,其键是工厂名称,其值是{{的实例3}}。给定Factory
构建实例的类由Factory#build_class
返回。因此,我们可以列出使用
FactoryGirl.
factories.
instance_variable_get('@items').
select { |name, factory| factory.build_class == SomeClass }.
keys
由于这依赖于内部,所以它肯定会在未来中断。