***本記事にはプロモーションが含まれています。***
Ruby on Railsチュートリアルで第6章のユーザーのモデルを作成しているとき、rails db:migrateしてもrails testすると、
Migrations are pending. To resolve this issue, run: bin/rails db:migrate RAILS_ENV=test
というエラーになります。素直に、RAILS_ENVをつけてテストをすると、テストはパスします。
その後、validationでuniquenessをつけてまたmigrateしようとするとこんどは、migrateできないというエラーになります。
SQLite3::ConstraintException: UNIQUE constraint failed: users.email: CREATE UNIQUE INDEX "index_users_on_email" ON "users" ("email")
このときは、一度db:rollbackして、db:migrateするとうまくいきます。
test/fixtures/users.ymlを空にしてから、
rails db:rollback RAILS_ENV=test rails db:migrate RAILS_ENV=test
チュートリアルでは、development環境で実行されているようですが、テストはtest環境で実行されているようで異なっています。
development環境とともにtest環境のデータベースも用意しないといけないようです。