2011-01-06 3 views
1

다른 공장과의 연관성이있는 factorygirl 팩토리가 있습니다. 예를 들어 : (: 사용자)를 두 번, 내가팩토리 걸 새내기 : 기존 팩토리를 연결로 호출 (생성하지 않음)

그래서 질문은합니다 (role.name 컬럼의 고유성 제약이있다)을 중복 오류가

FactoryGirl.define do 
    factory :user do |f| 
    f.sequence(:email) { |n| "user#{n}@example.com" } 
    f.password "foobar" 
    f.password_confirmation { |u| u.password } 
    f.role_id 2 
    f.association :role, :factory => :role 
    end 
end 

문제는 내가 공장을 호출하는 경우이다 : 위의 코드는 : role factory를 아직 만들지는 않았지만 존재하지 않는 경우 사용하도록 지정하려면 어떻게해야합니까?

답변

1

팩토리 역할 이름에 시퀀스를 사용하지 않는 이유는 무엇입니까? 예에서

FactoryGirl.sequence :role_name do |n| 
    "role#{n}" 
    end 

같은 롤 명의 순서를 정의 이 새 롤이 생성 될 때마다 하가 아니라 다른 ROLE_NAME으로

factory.role do |role| 
    f.name Factory.next :role_name 
    end 

같은 공장 역할을 정의한다. 각 테스트에서 역할을 생성하여 역할을 Factory.build에 전달할 수 있습니다. 그러나 나는 그것이 성가신 것을 안다.

관련 문제