Deviseインストール直後のテストで失敗
自作のアプリにログイン機能を実装しようということで Devise を試してみました。
こちらの記事を参考にさせていただいたんですが、ひと通り設定が終わってrailsサーバー再起動のあとログイン画面を確認できたので、自動で作成されたテストを試しに実行してみたら以下のエラーが
Error: HomeControllerTest#test_should_get_index: ActiveRecord::RecordNotUnique: SQLite3::ConstraintException: column email is not unique: INSERT INTO "users" ("created_at", "updated_at", "id") VALUES ('2018-08-26 07:01:20.987535', '2018-08-26 07:01:20.987535', 298486374)
いろいろ検索してスタックオーバーフローを見た結果、自動生成されたfixtureのymlファイルに問題がありました。
one: {} # column: value # two: {} # column: value
自動生成されるテストユーザーが2人いるんですが、それが同じ内容なのでemailが被ってしまっていたんですね。
one: email: user@example.com encrypted_password: password1 two: email: user2@example.com encrypted_password: password2
上記のように書き換えて解決。
テストも成功しました。
<参考にしたページ>
ruby on rails - SQLite3::ConstraintException: column email is not unique - Stack Overflow