2016-06-13 2 views
2

나는 두 개의 공장이있다.factory_girl create에서 기존 인스턴스를 반환하려면 어떻게해야합니까?</p> <pre><code>factory :foo factory :bar </code></pre> <p>푸 has_one 바 :

foo.rb에는 after_create 콜백이있어서 Bar 객체를 생성합니다. 현재, 내가 이런 식으로 필요한 것을 얻을 수 있어요,하지만 그것은 최소한의 예입니다 :

let(:bar) { create(:foo).bar } 
내가 (작동하지 않는)과 같이,보다 직접적으로 바 객체를 좀하고 싶습니다

..

factory :bar_from_foo_callback do 
    to_create { create(:foo).bar } 
end 

... 그런 다음 create(:bar_from_foo_callback)을 호출하여 필요한 바를 얻으십시오. 나는 to_create이 좋은 내기처럼 보인다고 생각했지만, 그것은 나에게주고 :

undefined method `bar' for 
#<FactoryGirl::Declaration::Static:0x007fb85e3d79d0> 

나는 그것이 생성하지 않도록 공장을 정의 할 수있는 방법이 또 다른 공장을 호출하고 콜백을 사용 있나요? 당신 create(:bar)하지만,이 경우는 아무것도하지 않는다는 Bar 이미 저장된 때문에 때

factory :bar do 
    initialize_with { create(:foo).bar } 
end 

참고 factory_girl 인스턴스에 save!를 호출하는 : 나는 광범위하게 그것을 테스트하지 않은 있지만

답변

3

이것은 작동하는 것 같다 Foo을 생성합니다.