ما هي أفضل الممارسات لإعداد جمعيات مع Factory_Girl في الخيار؟

StackOverflow https://stackoverflow.com/questions/1673533

سؤال

عادة ما استخدم هذه الخطوة لإعداد سجلات مع Factory_Girl:

Given /^the following (.+) records?:$/ do |factory, table|
  table.hashes.each do |hash|
    Factory(factory, hash)
  end
end

وهنا عملي عند إعداد الجمعيات:

Given the following group record:
  | id | name |
  | 1  | foo  |
And the following item records:
  | name | group_id |
  | bar  | 1        |
  | baz  | 1        |
  # ...

أنا أعرف أن هذا سيء. باستخدام معرفات يجعل الأمر كله هشا ومخفف من الفضل من شخص المجال.

لذلك، سؤالي هو - ماذا ستكون أفضل الممارسات لإعداد ارتباط مع Factory_Girl ووسيطة طاولة مثل الواحدة أعلاه؟

هل كانت مفيدة؟

المحلول 2

فقط للإجابة على سؤالي الخاص: ورطة

نصائح أخرى

يمكنك تحديد ارتباطات متعددة في المصنع.
مثل ما يلي:

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

القيام Factory(:group) سيؤدي إلى إنشاء Uplet Uplet مع عنصرين في ذلك.

يمكنك استخدام خطوات خيار Factorygirl المحددة:
https://github.com/theangebot/factory_girl/blob/master/lib/factory_girl/step_definitions.rb.

يمكنك إعداد البنود الخاصة بك ومجموعة (مجموعتك) في خطوة خيار واحدة فقط:

Given the following items exists:
  | Name     | Group        |
  | Foo      | Name: Bar    |
  | Foam     | Name: Bar    |
  | Food     | Name: Bar    |

عند القيام بذلك، يعد إنشاء "شريط" المجموعة "يستخدم وظيفة" Find_or_Create_by "، لذلك تقوم المكالمة الأولى بإنشاء المجموعة، والمكالمات 2 التالية تكتشف المجموعة التي تم إنشاؤها بالفعل.

بهذه الطريقة سوف تحتوي جميع العناصر الثلاثة على نفس المجموعة "شريط"، ويمكنك إنشاء أكبر عدد ممكن من العناصر المجمعة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top