使用相同的创建方法创建多个不同的工厂

Creating multiple different factories using the same create method

所以我有不同的工厂:factory_1、factory_2 他们有不同的特征 trait_1_factory_1, trait_2_factory_1 etc

是否可以使用来自同一命令的特定轨迹创建 factory_1 和 factory_2,例如:

FactoryBot.create( :factory_1, traits_1_factory_1, :factory_2, :factory_2, traits_1_factory2 )

我尝试了 () {} [] 的不同组合,但似乎对我不起作用?这可能吗? 这是唯一的解决方案吗 Factory.create(:factory_1, traits_1_factory_1) Factory.create等

谢谢

我相信您想在这里使用不同的工厂创建对象,即当您说 Factory.create 时,您的意思是 FactoryBot.create

不幸的是,我找不到任何直接的命令来完成这样的事情。这是使用 Hash 和循环的东西。

factories_and_traits = { factory_1: [trait_1_factory_1, trait_2_factory_1],
                         factory_2: [trait_1_factory_2] }

factories_and_traits.each do |factory, traits|
  FactoryBot.create(factory, *traits)
end

不,不可能从同一命令创建 factory_1 和 factory_2。

这里,'factory1'是创建对象的Modelclass

FactoryBot.create(:factory1)

如果您这样做是为了使规格变干,那么您可以按照以下方式进行操作,而不是像上面那样进行操作:

[
  [:factory_1, traits_1_factory_1],
  [:factory_2, traits_1_factory2]
].each do |factory|
  FactoryBot.create(*factory)
end

array中存储多个factories并迭代它。