ruby-on-rails - 如何获取为特定模型类定义的所有 factory_girl 工厂?

标签 ruby-on-rails ruby ruby-on-rails-4 factory-bot rspec3

我在 <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/

相关文章:

ruby-on-rails - 迭代模型属性并检查错误消息

ruby-on-rails - 确定操作是针对成员还是针对集合

ruby - 使用 JRuby 是否意味着在所有应用程序上复制 Ruby?

ruby-on-rails - "db:migrate rake aborted"错误由于未初始化常量 Rake::FileUtilsExt

ruby-on-rails - 名称为 "dot"的 Rails 强参数

ruby-on-rails - Rails API 请求非常慢 -> 300+ 秒

ruby-on-rails - Ruby Rails Mongrel 服务器 ODBC 连接重置

javascript - 第一次成功提交后提交停止工作

ruby - 获取ruby中对象的方法

ruby-on-rails - 在不更改任何内容的情况下更新 updated_at