2013-09-02 4 views
0

Issue을 만들 때마다 UserLabel으로 연결해야합니다. 사용자 has_many 레이블 및 레이블 has_many 사용자.rspec에서 many to many 연관 할당을 어떻게 마르게 할 수 있습니까?

Issue을 만들 때마다 많은 사양에서이 작업을 반복해야한다는 것이 문제입니다.

let(:label) { Fabricate(:label) } 
let(:responsible) { Fabricate(:responsible) } 

before do 
    label.stub(:users).and_return([responsible]) 
    responsible.stub(:labels).and_return([label]) 
end 

let(:issue) { Fabricate(:issue, label: label, responsible: responsible) 

도우미 클래스에 배치해야합니까? 나는 그것을 말릴 수있는 조언을 원합니다.

답변

1

이 보석은 일 할 수있는 : https://github.com/thoughtbot/factory_girl

factory :label do 
    name "label example" 
    user 
end 

factory :user do 
    name "John Doe" 
    after(:create) do |user| 
    FactoryGirl.create_list(:label, 1, user: user) 
    end 
end 

factory :issue do 
    name 'issue' 
    after(:create) do |issue| 
    issue.users = FactoryGirl.create_list(:user, 1) 
    end 
end 

을 그리고 그 후 당신은 같은 일을 할 수있는 :

issue = FactoryGirl.create(:issue) 
issue.users # returns array with 1 user 
issue.users.first.label # returns array with one label 
+0

감사합니다! 나는 시도를 줄 것이다! – Luccas