我在 <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 实现上述目标。但我想知道是否有任何辅助方法来获取模型类的所有定义。
最佳答案
从the source可以看出,当前版本的 factory_girl (4.5.0) 中的 FactoryGirl
类没有方便的方法来列出创建给定类实例的工厂。
这不是一个非常令人兴奋的答案,所以让我们以不方便的方式来做吧! FactoryGirl.factories
返回 FactoryGirl::Registry
,它也没有方便的方法来列出工厂,但确实有一个 @items
散列,其键是工厂名称,其值是 FactoryGirl::Factory
的实例。 . Factory#build_class
返回给定 Factory
构建其实例的类。所以我们可以列出构建给定类实例的工厂
FactoryGirl.
factories.
instance_variable_get('@items').
select { |name, factory| factory.build_class == SomeClass }.
keys
由于它依赖于内部结构,因此将来肯定会崩溃。
关于ruby-on-rails - 如何获取为特定模型类定义的所有 factory_girl 工厂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34702267/