Railsテスト test:models実行エラー解決方法
Railsのテストスクリプト実行時に test_helper のエラーが出た場合の解決方法です。
これは Rails チュートリアル を参考にテストしていた時におこったエラーです。
よく考えれば当たり前の話なのですが、忘れないようにメモしておきます。
ここでは Railsテスト test:models実行エラーの解決方法 を紹介します。
Sponsored Links
Railsエラー内容
エラー内容なこんな感じ。
>rake test:models rake aborted! ActiveRecord::PendingMigrationError: Migrations are pending. To resolve this issue, run: bin/rails db:migrate RAILS_ENV=test C:/Aptana/3.6.1/workspace/sample_app/test/test_helper.rb:3:in `<top (required)>' C:/Aptana/3.6.1/workspace/sample_app/test/models/user_test.rb:1:in `require' C:/Aptana/3.6.1/workspace/sample_app/test/models/user_test.rb:1:in `<top (required)>' Tasks: TOP => test:models (See full trace by running task with --trace)
テストスクリプトはこんな感じ。
require 'test_helper' class UserTest < ActiveSupport::TestCase def setup @user = User.new(name: "Example User", email: "user@example.com") end test "should be valid" do assert @user.valid? end end
Sponsored Links
解決方法
これはテスト環境にデータベース、もしくはテーブルが準備されていないことが原因でおこるエラーです。もう解決方法がメッセージにそのまんま出ているのでアレですが、下記のコマンドを実行すれば解決できます。
bundle exec rake db:migrate RAILS_ENV=test
db:migrate を初めて実行した時には、development.sqlite3 と test.sqlite3 という名前のファイルが生成されますが、テーブルは別です。DB Browser for SQLite を使って test.sqlite3 を開いてみるとわかります。
テーブルがないですね。初めてテストスクリプトを実行する時には、上記のコマンドを実行しましょう。
実行後、改めて test.sqlite3 を開いてみると・・・
はい、テーブルができましたね。
改めてテストを実行すると・・・
>rake test:models Started with run options --seed 18925 1/1: [===================================] 100% Time: 00:00:00, Time: 00:00:00 Finished in 0.05074s 1 tests, 1 assertions, 0 failures, 0 errors, 0 skips
エラーなく実行できました^^
まとめ
Railsのテストスクリプト実行時に test_helper のエラーが出た場合の解決方法を紹介しました。
皆さんも試してみてください。
おつかれさまでした。
Sponsored Links