2011-03-08 3 views
1

나는 계속 동일한 문제를 겪고 있으며, 나는이 문제를 경험 한 유일한 사람이고 다른 누군가가 더 나은 방법을 원한다면 놀랄 것이다. 종속 Factory (연관)가있는 Factory를 만들면 상위 모델이 추가 된 모델로 업데이트되지 않습니다. 아마 코드로 설명하기가 더 쉽습니다. factory_girl - has_many 관계 및 부모 모델 새로 고치기

내가 가진 말 :

Factory.define :company do |a| 
    a.name 'Acme' 
end 
Factory.define :office do |a| 
    a.name 'London' 
    a.association :company, :factory => :company 
end 

나는이 코드를 실행 :이 테스트

london.company.offices.count.should eql(2) 

실패를 실행하는 경우 회사는 한국 전기 전에 인스턴스화 때문에, 다음

london = Factory.create(:office) 
sanfran = Factory.create(:office, :name => 'San Fran' , :company = london.company) 

을 런던이나 San Fran도 만들어졌고 company.offices.new가 새 모델을 만드는 데 사용되지 않았기 때문에 공동 mpany 모델은 업데이트되지 않았습니다. 새로 고침을 강제로

london.company(true).offices.count.should eql(2) 

을 :

나는이 문제를 해결 할 수 있었던 유일한 방법은 다음과 같이 내 테스트를 작성하는 것입니다.

그러나 테스트 할 때마다이 작업을 수행하는 것이 바람직하지 않습니다. 특히 테스트중인 코드가 그 작업에 의존해서는 안됩니다.

+0

문맥을 더 제공 하시겠습니까? 이 공장들은 분명히 작동해야만합니다. 저는이 공장을 성공적으로 사용하고 있습니다. 단서가 테스트에 포함되어 있습니다. 게시물을 올리면 내가 살펴볼 것입니다. –

+0

': company = london.company'이 맞습니까? ': company => london.company'이 아니어야합니다. –

답변

0

먼저 모기업을 만들 수없는 이유가 있습니까? 자식 개체를 만든 후 미리 인스턴스화 된 부모로부터 카운트를 얻는 데 문제가없는 것처럼 보입니다.

describe Company do 
    describe "office associations" do 
    before(:each) do 
     @company = Factory(:company) 
    end 

    it "should have the correct number of offices" do 
     o1 = Factory(:office, :company => @company) 
     o2 = Factory(:office, :company => @company) 
     @company.offices.should =~ [o1, o2].flatten # <= Not sure why, but each call to Factory appears to return an array 
    end 
    end 
관련 문제