Railsテスト test:models実行エラー解決方法 ホームページ制作 | 墨田区

Railsテスト test:models実行エラー解決方法

LINEで送る
Pocket

Railsのテストスクリプト実行時に test_helper のエラーが出た場合の解決方法をご紹介します。
Railsテスト test:models実行エラー解決方法

これは Rails チュートリアル を参考にテストしていた時におこったエラーです。
Rails チュートリアル

よく考えれば当たり前の話なのですが、忘れないようにメモしておきます。




【PR】マジか?!「アレ」してるLINEスタンプっていったい・・・


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

解決方法

これはテスト環境にデータベース、もしくはテーブルが準備されていないことが原因でおこるエラーです。もう解決方法がメッセージにそのまんま出ているのでアレですが、下記のコマンドを実行すれば解決できます。
bundle exec rake db:migrate RAILS_ENV=test 

db:migrate を初めて実行した時には、development.sqlite3 と test.sqlite3 という名前のファイルが生成されますが、テーブルは別です。DB Browser for SQLite を使って test.sqlite3 を開いてみるとわかります。
DB Browser for SQLite
Railsテスト テーブルがない

テーブルがないですね。
初めてテストスクリプトを実行する時には、上記のコマンドを実行しましょう。

実行後、改めて test.sqlite3 を開いてみると・・・
Railsテスト テーブルができた

はい、テーブルができましたね。
改めてテストを実行すると・・・
>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

エラーなく実行できました^^

皆さんも試してみてください。

おつかれさまでした。

LINEで送る
Pocket

この記事がお役に立ちましたら シェア をお願いいたします。

コメントを残す

お名前 (必須)
メールアドレス
(アドレスは公開されません)

コメント(必須)

Trackback URL