Was ist die beste Praxis Verbände für die Einrichtung mit factory_girl in Gurke?
-
16-09-2019 - |
Frage
ich normalerweise diesen Schritt verwenden, um einzurichten Datensätze mit factory_girl:
Given /^the following (.+) records?:$/ do |factory, table|
table.hashes.each do |hash|
Factory(factory, hash)
end
end
Und hier ist meine Work-around, wenn Verbände einrichten:
Given the following group record:
| id | name |
| 1 | foo |
And the following item records:
| name | group_id |
| bar | 1 |
| baz | 1 |
# ...
Ich weiß, das ist schlecht. IDs macht das Ganze spröde und kryptisch aus dem Blick der Domäne Person.
Also, meine Frage ist - was die beste Praxis sein, die eine Verbindung mit factory_girl und eine Tabelle Argumente wie die oben
einzurichtenLösung 2
Nur meine eigene Frage zu beantworten: Pickle
Andere Tipps
Sie können mehrere Verbände in einer Fabrik definieren.
Wie folgt aus:
Factory.define :item do |item|
item.name "item_name"
end
Factory.define :group do |group|
group.name "group_name"
group.items { |items| [ items.association(:item), items.association(:item) ] }
end
Doing a Factory(:group)
Ihre Gruppe uplet mit zwei Elementen in ihm erstellen.
Sie können mit den definierten factory Gurke Schritte:
https://github.com/thoughtbot/factory_girl/blob/master /lib/factory_girl/step_definitions.rb
Sie können Setup Ihre Artikel und Ihre Gruppe (n) in nur eine Gurke Schritt:
Given the following items exists:
| Name | Group |
| Foo | Name: Bar |
| Foam | Name: Bar |
| Food | Name: Bar |
Wenn es so zu tun, die Schaffung von Gruppe ‚Bar‘ ist mit ‚find_or_create_by‘ Funktionalität, so dass der erste Aufruf der Gruppe erstellt, die nächsten zwei Anrufe, die bereits erstellten Gruppe findet.
Auf diese Weise werden alle drei Elemente werden gleiche Gruppe haben ‚Bar‘, und Sie können so viele gruppierten Elemente erstellen, wie Sie benötigen.