所以我有不同的工厂:factory_1,factory_2他们有不同的特征trait_1_factory_1,trait_2_factory_1等
可以使用同一命令创建具有特定特征的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_1和factory_2。
在这里,'factory1'是创建对象的Model
或class
。
FactoryBot.create(:factory1)
如果你是为了制作规格DRY,那么你可以这样做,而不是像上面那样做,你可以这样做:
[
[:factory_1, traits_1_factory_1],
[:factory_2, traits_1_factory2]
].each do |factory|
FactoryBot.create(*factory)
end
在factories
中存储多个array
并重复它。
我相信你想在这里使用不同的工厂创建对象,即当你说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