FactoryBot
基本の使い方
factory :foo do ... end を定義したら、標準の構造は create(:foo) で作れる
決まった構造のバリエーションを用意したい場合は trait を使って定義する
create(:foo, :baz, :bar) のように使いたい traits を並べて使える
create するときに明示的に要素を書き換えることもできる
create(:foo, baz: 'sample') など
code:ruby
FactoryBot.define do
factory :message do
subject { 'Test Message' }
unseen { true }
trait :spam do
subject { 'SPAM Message' }
end
trait :seen do
unseen { false }
end
# 複数の traits をまとめて新たな factory を作る
end
end
# とりあえず :message を作る
message = create(:message)
# trait :seen を適用した :message を作る
message = create(:message, :seen)
# trait :seen と :spam を適用した :message を作る
message = create(:message, :seen, :spam)
# その場で項目を弄って :message を作る
message = create(:message, subject: 'テストメッセージ')
# traits から錬成した factory を使う
message = create(:seen_spam_message)