Rails 测试失败时 Minitest 崩溃

Rails Minitest crashing when tests fail

当我 运行 rails test(Rails 5 和 Ruby 2.4.2)时,每次测试失败时 Minitest 都会崩溃。例如,我通过将 assert 切换为 assert_not:

来强制一个简单的测试失败
Failure: TransactionTest#test_transaction_should_be_valid [/home/.../test/models/transaction_test.rb:11]: Expected true to be nil or false

/home/.../.rvm/gems/ruby-2.4.2/gems/railties-5.1.4/lib/rails/test_unit/reporter.rb:70:in `method': undefined method `test_transaction_should_be_valid' for class `Minitest::Result' (NameError)

如果测试通过,那么整个报告就成功了,我得到了报告摘要。如果只有一个测试失败,我会收到上面的错误报告。我在我的 transaction_test.rb 文件中定义了 test_transaction_should_be_valid 并且它的证明是当测试通过时它 运行 很顺利。

我现在卡住了。关于可能导致此问题的原因有什么想法吗?

显然 Rails 与 Minitest 5.10/5.11 不太兼容:https://github.com/seattlerb/minitest/issues/730 他们发布了一个 monkeypatch 来帮助我们渡过难关。

Rails 显然也在边缘修复了这个问题。 https://github.com/rails/rails/pull/31624

当我从 master 分支中拉出时,这个错误对我来说消失了。将其放入您的 Gemfile 中:

gem 'rails', git: 'https://github.com/rails/rails.git'

编辑:从评论中推广(感谢 coco9nyc):

或者您可以尝试降级 minitest:

gem 'minitest', '5.10.3'