テストコード用のインスタンスを作成する際、モデルにバリデーションが設定されているとバリデーションエラーによりインスタンスが作成できないときがあります。
バリデーションのチェックはスキップしていいので、とりあえずテスト用のデータを作りたいという場合は以下のようにFactoryBotでバリデーションをスキップするtrait
を定義してあげるとうまくいきます。
spec/factories/users.rb
FactoryBot.define do
factory :user do
email 'xxx'
...
...
+ trait :skip_validate do
+ to_create {|instance| instance.save(validate: false)}
+ end
end
end
spec/models/user_spec.rb
require 'spec_helper'
describe User do
- let(:user) { create(:user) }
+ let(:user) { create(:user, :skip_validate) }
...
...
end