minitestの5.10.2でtestが動作しないときに試すこと

  • 15
    いいね
  • 1
    コメント

(2017/05/17追記あり)
Ruby on Rails Tutorialのテストが動作しなかったので備忘録代わりに。

上記Tutorialにおいて、Railsのバージョンは5.0.0.1で固定されている。
そして、簡単なコントローラーをgenerateしてテストを実行しようとすると下記エラーが発生する。

$ rails test
Running via Spring preloader in process 2460
Run options: --seed 30883

# Running:

..

Finished in 0.811104s, 2.4658 runs/s, 2.4658 assertions/s.
/usr/local/rvm/gems/ruby-2.3.0/gems/railties-5.0.0.1/lib/rails/test_unit/minitest_plugin.rb:9:in `aggregated_results': wrong number of arguments (given 1, expected 0) (ArgumentError)
        from /usr/local/rvm/gems/ruby-2.3.0/gems/minitest-5.10.2/lib/minitest.rb:597:in `report'
        from /usr/local/rvm/gems/ruby-2.3.0/gems/minitest-reporters-1.1.9/lib/minitest/minitest_reporter_plugin.rb:26:in `each'
        from /usr/local/rvm/gems/ruby-2.3.0/gems/minitest-reporters-1.1.9/lib/minitest/minitest_reporter_plugin.rb:26:in `report'
        from /usr/local/rvm/gems/ruby-2.3.0/gems/minitest-5.10.2/lib/minitest.rb:687:in `each'
・
・
・

どうもgemのminitestが5.10.2(2017/5/9リリース)にアップデートされたことで発生した様子。
参考:StackOverflow

Rails側でminitestに合わせた対応が進んでいる。
暫定対応としては、gemfileに以下の記述を追加し、5.10.1のminitestをインストールすることで解決ができる。

gem 'minitest', '~> 5.10', '!= 5.10.2'

(2017/5/17追記)
2017/5/12にリリースされたRails5.0.3とRails5.1.1で対応されたそうです。