我在中定义了一个工厂
:
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
我想获得所有为Class定义的工厂Model
。
我可以使用来获得所有类的工厂定义FactoryGirl.factories
,是的,我可以使用map / reduce实现上述目标。但是我想知道是否有任何辅助方法来获取模型类的所有定义。
从源头可以看出,FactoryGirl
当前版本的factory_girl(4.5.0)中的类没有一种便捷的方法来列出创建给定类实例的工厂。
这不是一个非常令人兴奋的答案,所以让我们以不方便的方式来做吧!FactoryGirl.factories
返回a FactoryGirl::Registry
,它又没有方便的方法来列出工厂,但确实有一个@items
哈希,其键是工厂名称,值是的实例FactoryGirl::Factory
。给定的Factory
构建实例的类由返回Factory#build_class
。因此,我们可以列出使用以下命令构建给定类实例的工厂
FactoryGirl. factories. instance_variable_get('@items'). select { |name, factory| factory.build_class == SomeClass }. keys
由于这取决于内部,因此将来肯定会中断。