2012-07-17 2 views
0

이 패턴은 내 rspec 테스트에서 많이 볼 수 있으며 운이 좋으면 조금 청소 해 보려고 몇 번 시도했습니다. 공장은 blog이고, 공장은 post입니다. 블로그 has_many 게시물.많은 관련 객체가있는 객체 만들기

나는 일반적으로이 목적을 위해 FactoryGirl를 사용하고 공장과 같을 것이다는 :

@blog = FactoryGirl.create(:blog) 
5.times { FactoryGirl.create(:post, :blog => @blog) } 

내가 할 수 있어야처럼 보인다 :

FactoryGirl.define :blog do |b| 
    b.title "my blog" 
end 

FactoryGirl.define :post do |p| 
    p.author "some dude" 
    p.content 
end 

이 내 RSpec에 테스트의 코드 냄새 완전히 수화 된 블로그 게시물의 새 공장을 정의하십시오.

FactoryGirl.define :blog_with_posts, :parent => :blog do |bwp| 
    5.times { bwp.association(:post) } 
end 

나는 찾을 수 없었습니다. 실제로 작동하는 접근법.

답변

1
FactoryGirl.define do 
    factory :post do 
    author "dude" 
    content { Faker::Lorem.paragraph } 
    blog 
    end 

    factory :blog do 
    title "title" 
    factory :blog_with_posts do 

     ignore do 
     posts_count 5 
     end 

     after(:create) do |blog, evaluator| 
     FactoryGirl.create_list(:post, evaluator.posts_count, blog: blog) 
     end 

    end 
    end 
end