ما هي أفضل الممارسات لإعداد جمعيات مع Factory_Girl في الخيار؟
-
16-09-2019 - |
سؤال
عادة ما استخدم هذه الخطوة لإعداد سجلات مع 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 التالية تكتشف المجموعة التي تم إنشاؤها بالفعل.
بهذه الطريقة سوف تحتوي جميع العناصر الثلاثة على نفس المجموعة "شريط"، ويمكنك إنشاء أكبر عدد ممكن من العناصر المجمعة.