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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

2964閲覧

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

Shara

総合スコア125

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2018/01/07 10:25

編集2018/01/07 10:30

###前提・実現したいこと
Railsのチュートリアルを見ながら、勉強中の初心者です。

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

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

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

bash

1Running via Spring preloader in process 759 2Run options: --seed 14248 3 4# Running: 5 6E 7 8Error: 9UsersControllerTest#test_should_get_index: 10ActiveRecord::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') 11 12Traceback (most recent call last): 13 27: from -e:1:in `<main>' 14 26: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require' 15 25: from /Users/shara/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require' 16 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)>' 17 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' 18 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' 19 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 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' 21 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' 22 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' 23 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' 24 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' 25 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' 26 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' 27 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' 28 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' 29 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' 30 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' 31 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' 32 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' 33 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' 34 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' 35 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' 36 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' 37 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' 38 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' 39 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' 40/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) 41

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

###該当のソースコード
test/controllers/users_controller_test.rb

Ruby

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

config/routes.rb

Ruby

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

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

bash

1Running via Spring preloader in process 815 2Run options: --seed 48142 3 4# Running: 5 6Finished in 0.001560s, 0.0000 runs/s, 0.0000 assertions/s. 70 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)

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

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 を修正したら、エラーが解消されテストが実施できました。

投稿2018/01/07 13:03

Shara

総合スコア125

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問