오이로 팩토리 _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 |
# ...
나는 이것이 나쁘다는 것을 안다. ID를 사용하면 도메인의 유리한 바인드에서 모든 것이 부서지기 쉬워집니다.
그래서 내 질문은 - 팩토리 _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
a Factory(:group)
두 개의 항목으로 그룹 업렛을 만들 것입니다.
정의 된 Factorygirl 오이 단계를 사용할 수 있습니다.
https://github.com/thuithbot/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 |
이렇게 할 때 그룹 'bar'의 생성은 'find_or_create_by'기능을 사용하고 있으므로 첫 번째 호출은 그룹을 생성하고 다음 2 개의 호출은 이미 생성 된 그룹을 찾습니다.
이런 식으로 3 개의 항목 모두 동일한 그룹 '바'가 있으며 필요한만큼 그룹화 된 항목을 만들 수 있습니다.
제휴하지 않습니다 StackOverflow