2018年9月11日火曜日

Devise を導入すると ActiveRecord::RecordNotUnique: エラーでテストが動かなくなったので対処(暫定対応)

Rails Tutorial のサンプルアプリをベースに作り始めたアプリに、 Devise によるユーザー登録を追加したところ、全てのテストで下記のエラーが出るようになりました。
テストには Minitest を使用しています。

ActiveRecord::RecordNotUnique:         ActiveRecord::RecordNotUnique: SQLite3::ConstraintException: UNIQUE constraint failed: users.email: INSERT INTO "users" (...

emailの重複制約に引っかかっている様子…?

テスト環境のユーザーはどこに設定があるんだっけと思い返したところ、 test/fixtures/users.yml の内容がデフォルトで下記のようになっているのを発見。


one: {}
# column: value
#
two: {}
# column: value

おそらくこれのせいで、同じ値を使って one と two の二人のユーザーが作られる状態になっているのかと。
two を削除すると、とりあえずまたテストが動くようになりました。


one: {}
# column: value

この後ユーザーが絡んだテストを追加する際にちゃんとした対応が必要そうですが…取り急ぎ。

0 件のコメント:

コメントを投稿