【问题标题】:FactoryBot: how to use transient in skip_create factory to specify properties in an internal factory?FactoryBot:如何在 skip_create 工厂中使用瞬态来指定内部工厂中的属性?
【发布时间】:2018-08-20 22:10:07
【问题描述】:

我有以下工厂,里面有 _skip_create_,并且在创建时还调用另一个工厂,我试图指定一个特定的 UUID。示例:

FactoryBot.define do
  factory :experiment do

    transient { order nil }

    env_array = %w[prod dev test]
    uuid { SecureRandom.uuid }
    name { 'some name' }

    skip_create
    initialize_with do
      env_array.each_with_index do |env, idx|
        FactoryBot.create(:environment, uuid: 'b5c096d5-479a-4693-ac14-9cea7dfd045c') if order.eql? 'first'
      end
    end
  end
end

问题是,我无法让 order 成为可操作的。我明白了:

ArgumentError: Trait not registered: order

当我打电话给工厂时,如何让 order 可以指定?

【问题讨论】:

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


    【解决方案1】:

    那是因为你错过了花括号{}

    FactoryBot.define do
      factory :experiment do
        transient do
          order { nil }
        end
       ....
      end
    end
    

    【讨论】:

    • 做到了。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    相关资源
    最近更新 更多