質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.61%

[Rails] Minitest のエラーの見方について

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 424

Shara

score 105

前提・実現したいこと

Railsのチュートリアルを見ながら、勉強中の初心者です。

初歩的な質問かもしれませんが、Rails test で、単体テストを行った際、テストに記載していない内容のエラーが発生し、エラーの原因がわからず困ってます。
どのソースが実行されているのか(どのソースでエラーになっているのか)確認する方法を教えて欲しいです。

発生している問題・エラーメッセージ

rails test test/controllers/users_controller_test.rb 
を実行したときに、以下のエラーが発生してます。

Running via Spring preloader in process 759
Run options: --seed 14248

# Running:

E

Error:
UsersControllerTest#test_should_get_index:
ActiveRecord::ValueTooLong: Mysql2::Error: Data too long for column 'phase_id' at row 1: INSERT INTO `testphases` (`created_at`, `updated_at`, `phase_id`) VALUES ('2018-01-07 09:51:16', '2018-01-07 09:51:16', '298486374')

Traceback (most recent call last):
    27: from -e:1:in `<main>'
    26: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    25: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    24: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/spring-2.0.2/lib/spring/application/boot.rb:19:in `<top (required)>'
    23: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/spring-2.0.2/lib/spring/application.rb:135:in `run'
    22: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/spring-2.0.2/lib/spring/application.rb:135:in `loop'
    21: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/spring-2.0.2/lib/spring/application.rb:141:in `block in run'
    20: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/spring-2.0.2/lib/spring/application.rb:171:in `serve'
    19: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/spring-2.0.2/lib/spring/application.rb:171:in `fork'
    18: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/minitest-5.11.1/lib/minitest.rb:63:in `block in autorun'
    17: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/minitest-5.11.1/lib/minitest.rb:136:in `run'
    16: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/minitest-5.11.1/lib/minitest.rb:159:in `__run'
    15: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/minitest-5.11.1/lib/minitest.rb:159:in `map'
    14: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/minitest-5.11.1/lib/minitest.rb:159:in `block in __run'
    13: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/railties-5.1.4/lib/rails/test_unit/line_filtering.rb:9:in `run'
    12: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/minitest-5.11.1/lib/minitest.rb:319:in `run'
    11: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/minitest-5.11.1/lib/minitest.rb:347:in `with_info_handler'
    10: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/minitest-5.11.1/lib/minitest.rb:360:in `on_signal'
     9: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/minitest-5.11.1/lib/minitest.rb:320:in `block in run'
     8: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/minitest-5.11.1/lib/minitest.rb:320:in `each'
     7: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/minitest-5.11.1/lib/minitest.rb:321:in `block (2 levels) in run'
     6: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/minitest-5.11.1/lib/minitest.rb:334:in `run_one_method'
     5: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/minitest-5.11.1/lib/minitest.rb:785:in `record'
     4: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/minitest-5.11.1/lib/minitest.rb:785:in `each'
     3: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/minitest-5.11.1/lib/minitest.rb:786:in `block in record'
     2: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/railties-5.1.4/lib/rails/test_unit/reporter.rb:23:in `record'
     1: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/railties-5.1.4/lib/rails/test_unit/reporter.rb:70:in `format_rerun_snippet'
/Users/shara/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/railties-5.1.4/lib/rails/test_unit/reporter.rb:70:in `method': undefined method `test_should_get_index' for class `Minitest::Result' (NameError)

INSERTを発行するテストは行っていないにも関わらず、INSERTのエラーが発生しています。
テスト範囲を、test/controllers/users_controller_test.rb で指定しており、このソース内には、CREATEのイベント発行は行っていません。

該当のソースコード

test/controllers/users_controller_test.rb

  1 require 'test_helper'
  2 
  3 class UsersControllerTest < ActionDispatch::IntegrationTest
  4   setup do
  5     @user = users(:one)
  6   end
  7 
  8   test "should get index" do
  9     get users_path
 10     assert_response :success                                                                                        
 11   end
 12 end

config/routes.rb

  1 Rails.application.routes.draw do                                                                                    
  2   resources :projects
  3   resources :testids
  4   get 'sessions/new'
  5 
  6     root   'static_pages#home'
  7     get    '/home',    to: 'static_pages#home'
  8     get    '/signup',  to: 'users#new'
  9     get    '/login',   to: 'sessions#new'
 10     post   '/login',   to: 'sessions#create'
 11     delete '/logout',  to: 'sessions#destroy'
 12 
 13     resources :users
 14 
 15   # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
 16 end

試したこと

1   8行目〜11行目をコメントアウトしてテストをすると、エラーは出ず、何も処理がされずに終了します。

Running via Spring preloader in process 815
Run options: --seed 48142

# Running:

Finished in 0.001560s, 0.0000 runs/s, 0.0000 assertions/s.
0 runs, 0 assertions, 0 failures, 0 errors, 0 skips

2   test/controllers 内の他のテストファイルをコメントアウトしても状況は変わりませんでした。

補足情報(言語/FW/ツール等のバージョンなど)

MacOSX 10.13.2 (High Sierra)
MySQL 5.7.19
Ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin17]
rails (5.1.4)
minitest (5.11.1, 5.10.3)

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

解決しました。

rails g model testphase で、モデルを作成したときに自動生成された、
test/fixtures/testphases.yml
が原因だったようです。

test/test_helper.rb 内で、

  6   fixtures :all    


と書かれており、fixutureのファイルが全て読み込まれていたようです。

自動生成されたtest/fixtures/testphases.ymlには、

  6 #
  7 one: {}
  8 # column: value
  9 #
 10 two: {}
 11 # column: value


と、空データの定義になっていたので、不正なSQLが発行されてエラーになっていたようです。
test/fixtures/testphases.yml を修正したら、エラーが解消されテストが実施できました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る