2012-07-17 200 views
0

我在rspec測試中看到了很多這種模式,我嘗試了幾次來清理它,沒有運氣。我有一個工廠,當然是blog,工廠post。博客has_many帖子。創建一個包含許多關聯對象的對象

我一般用FactoryGirl爲了這個目的,工廠應該是這樣的:

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

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

這是我的RSpec的測試代碼味道:

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

好像我應該能夠定義一個完全水化的博客文章的新工廠:

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 
相關問題