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

einzurichten
War es hilfreich?

Lö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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top