我在我的rspec测试中看到了很多这种模式,我已经尝试过几次清理它而没有运气。我有一个工厂,当然blog
和工厂post
。博客有很多帖子。
我通常使用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
我无法找到真正有用的方法。
答案 0 :(得分: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