【问题标题】:FactoryBot get available traits for a factoryFactoryBot 获取工厂的可用特征
【发布时间】:2018-07-27 18:50:32
【问题描述】:

是否有 FactoryBot 方法或某种方式来获取工厂的可用特征?

例如:

FactoryBot.define do
  factory :address, class: Address do
    trait :in_california do
      state 'CA'
    end

    trait :in_new_york do
      state 'NY'
    end

    trait :in_florida do
      state 'FL'
    end
end

我希望能够以编程方式获取特征,例如 FactoryBot.get_traits (:address),它会返回为该工厂定义的特征数组,在本例中为

["in_california", "in_new_york", "in_florida"]

这样会更清楚吗?

【问题讨论】:

  • 我进行了搜索,但找不到任何相关内容。我想知道是否有办法获得工厂的特征。我正在使用一个交互式工具(thor gem)来允许用户选择哪些特征给工厂,这就是我问这个的原因。 @jvillian
  • @jvillian 这不是特征。 IE。工厂':用户'可以有许多运行一些回调等的特征。即':user_with_payments' 可以做一些其他的事情。 attributes_for(:my_factory).keys 将仅返回工厂 ':user' 中定义的属性哈希中的键
  • @jedi - 抱歉,我之前没有在我的工厂使用过特征。因此,我走上了完全错误的道路。我将删除我的答案和 cmets,因为我没有添加任何有用的内容。
  • @ibaralf 试试 FactoryBot.factory_by_name(:your_factory).defined_traits。也可以试试FactoryBot.factoriesFactoryBot.traits。你也可以看看 FactoryBot.configuration.factories[:your_factory].defined_traits
  • FactoryBot.configuration.factories[:your_factory].defined_traits 。这似乎给了我一组特征。谢谢,在实际文档中没有看到这个,或者很难搜索。

标签: ruby-on-rails ruby factory-bot factory


【解决方案1】:

我相信您想要的是以下内容:

FactoryBot.factories[:address].defined_traits.map(&:name)
#=> ["in_california", "in_new_york", "in_florida"]

【讨论】:

  • 就是这个。谢谢。我编辑了您的答案并添加了 .map(&:name) 和返回值,以完成您的示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-19
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多