오이로 팩토리 _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        |
  # ...

나는 이것이 나쁘다는 것을 안다. 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 개의 항목 모두 동일한 그룹 '바'가 있으며 필요한만큼 그룹화 된 항목을 만들 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top