rails testコマンドが動かない
最近Railsチュートリアルを進めています。
第3章でrails test
でtestをする部分があるのですが、うまく動かなかったので解決法をメモ。
エラーログ
# Running:
......FF
Failure:
MicropostsControllerTest#test_should_update_micropost [app_name/test/controllers/microposts_controller_test.rb:38]:
Expected response to be a <3XX: redirect>, but was a <200: OK>
Traceback (most recent call last):
27: from -e:1:in `<main>'
/** 省略 **/
/home/nagatch/.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_update_micropost' for class `Minitest::Result' (NameError)
うまくいけば
16 runs, 19 assertions, 2 failures, 0 errors, 0 skips
と出てくるところが1つテストが失敗したところでundefined method
のエラーが発生しそれ以降のテストが止まってしまいます。
解決法
チュートリアル中のGemfile
に
group :test do
gem 'rails-controller-testing', '1.0.2'
gem 'minitest-reporters', '1.1.14'
gem 'guard', '2.13.0'
gem 'guard-minitest', '2.4.4'
end
と記述するところがあるのですが、そこに
gem 'minitest', '5.10.3'
を追加します。
上のGemfileでインストールされるminitestのバージョンは5.10.4なのですが、5.10.4ではminitest-reporters
と相性が悪いらしく、エラーが発生するらしいです。
gem 'minitest', '5.10.3'
を追加することで明示的に5.10.3にダウングレードしています。
追加したら、
$ bundle update
を実行。
rails test
すると…
/** 省略 **/
Finished in 0.951040s, 16.8237 runs/s, 19.9781 assertions/s.
1) Failure:
MicropostsControllerTest#test_should_create_micropost [/mnt/c/Users/nagat/Desktop/Git/hello_app/test/controllers/microposts_controller_test.rb:19]:
"Micropost.count" didn't change by 1.
Expected: 3
Actual: 2
2) Failure:
MicropostsControllerTest#test_should_update_micropost [/mnt/c/Users/nagat/Desktop/Git/hello_app/test/controllers/microposts_controller_test.rb:38]:
Expected response to be a <3XX: redirect>, but was a <200: OK>
16 runs, 19 assertions, 2 failures, 0 errors, 0 skips
Finished in 1.003838s, 15.9388 runs/s, 18.9274 assertions/s.
16 runs, 19 assertions, 2 failures, 0 errors, 0 skips
うまくいきました。
(テストが通ってないのはご愛嬌)
(てかなんで自動生成のテストに引っかかってるのか分からない)
おしまい
2ヶ月ぶりの更新。
見事に三日坊主になってます(なんとかがんばります)