2017-12-20 2 views
0

So habe ich verschiedene Fabriken: Factory_1, Factory_2 Sie haben verschiedene Züge trait_1_factory_1, trait_2_factory_1 etcmehrere verschiedene Fabriken Erstellen der Verwendung derselben Methode erstellen

Ist possbile Factory_1 und Factory_2 mit spezifischen trairs aus demselben Befehl zu erstellen, wie :

FactoryBot.create ( : Factory_1, traits_1_factory_1, : Factory_2, : Factory_2, traits_1_factory2 )

Ich habe verschiedene Kombinationen von() {} [] versucht, aber scheint nicht für mich zu arbeiten? Ist das möglich? Ist dies die einzige Lösung Factory.create (: Factory_1, traits_1_factory_1) Factory.create usw.

Danke

+0

'Factory.create' oder' FactoryBot.create'? –

+0

@JagdeepSingh behoben – user8217653

Antwort

0

Nein, es ist nicht möglich, factory_1 und factory_2 mit demselben Befehl zu erstellen.

Hier ist 'factory1' die Model oder class deren Objekte erstellt werden.

FactoryBot.create(:factory1)

Wenn Sie es für die Herstellung spec DRY, dann tun werden, anstatt wie oben tun, können Sie wie unten tun:

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

Shop mehrere factories in array und es durchlaufen.

+0

warum die * in * factory – user8217653

+0

'*' ist die Elemente aus einem Array abrufen. Da wir nur Elemente benötigen, die an 'FactoryBot.create()' als 'array' übergeben werden – Rhunal

0

Ich glaube, Sie wollen Objekte erstellen mit verschiedenen Fabriken hier also, wenn Sie Factory.create sagen, Sie Mittelwert FactoryBot.create.

Leider konnte ich keinen direkten Befehl finden, um so etwas zu erreichen. Hier ist etwas mit einem Hash und einer Schleife.

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 
Verwandte Themen