FactoryGirlでユニーク制約のあるデータを扱った場合、データのクリアなどの挙動の変化によりテストが成功したり失敗したりすることがある。
Userモデルが validate_uniqueness_of :email だったり
データベースにemailのunique制約がある時など
initialize_withを使う
spec/factories/user.rb
FactoryGirl.define do
factory :user do
sequence(:email) {|n| "person#{n}@example.com" }
initialize_with { User.find_or_create_by_email(email)}
end
end
参考:Stackoverflow(Using factory_girl in Rails with associations that have unique constraints)