# 在新增 user 後會在新增 posts factory :user_with_postsdo # posts_count 在 transient 裡面宣告,可以使用 `evaluator` 將值取出 transient do posts_count 5# 新增 5 篇文章 end
# 在 after(:create) 呼叫會傳入兩個值: # 第一個值為 user # 第二個值為 evaluator # create_list: # 第一個三數是新增 post 這個東西 # 第二個參數是新增 post 的數量 # 第三個三數確保 user 能夠關聯到 posts after(:create) do |user, evaluator| create_list(:post, evaluator.posts_count, user: user) end end end
factory :postdo title 'Post Title' user end end
1 2
user = create(:user, :user_with_posts) user.posts.count # => 5
不同類別
下面的範例是 post 預設的 status 是 public,而使用 trait 可以產生不同的 status。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
# spec/factories/user.rb FactoryGirl.define do factory :postdo status "public"
trait :post_publicdo status "public" end
trait :post_privatedo status "private" end end end