当前位置:  开发笔记 > 后端 > 正文

如何获得为特定模型类定义的所有factory_girl工厂?

如何解决《如何获得为特定模型类定义的所有factory_girl工厂?》经验,为你挑选了1个好方法。

我在中定义了一个工厂/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

我想获得所有为Class定义的工厂Model

我可以使用来获得所有类的工厂定义FactoryGirl.factories,是的,我可以使用map / reduce实现上述目标。但是我想知道是否有任何辅助方法来获取模型类的所有定义。



1> Dave Schweis..:

从源头可以看出,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

由于这取决于内部,因此将来肯定会中断。

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有