升级到rails 5.2.0后,无法指定要测试的目录

时间:2018-05-11 21:26:46

标签: ruby-on-rails ruby capybara minitest

我已从rails 5.1.1升级到rails 5.2.0。我的流程如下:

除了我注意到我的测试套件中有一些奇怪的行为之外,所有东西看起来都运行良好

  • 运行命令rails test test/system根本没有运行我的系统测试。它运行我的所有其他测试(策略,服务,模型,作业),但不运行我的系统测试。
    • 奇怪的是:运行特定的系统测试文件,例如:rails test test/system/comment_test.rb有效。
  • 运行特定的测试目录不再有效。例如,之前我可以运行rails test test/policiesrails test test/modelsrails test test/services,它只会在这些目录中运行测试。这不再有效。相反,它只运行所有测试(系统测试除外)。

知道导致此行为的rails 5.1.1rails 5.2.0之间发生了哪些变化?或者,也许我只是缺少一些东西?

根据Rails Guides Testing Rails Applications: 2.7 The Rails Test Runner,它声明应该能够在每个目录的基础上运行测试:

  

您还可以通过提供目录路径来运行整个测试目录。

预期行为:

rails test =>运行整个测试套件

rails test test/system =>运行系统目录中的所有测试

rails test test/models =>仅运行模型目录中的测试

重现行为

我可以使用以下命令重现该行为:

rails new test_app         # create demo app
cd test_app                # cd into app
rails g scaffold user name # scaffold user
rake db:migrate            # migrate
rails test test/system/    # Expect to run system tests but does not (scaffold creates 4 system tests)

1 个答案:

答案 0 :(得分:2)

rails -T您可以看到可用的任务。这个问题的两个相关问题是

rails test          # Runs all tests in test folder except system ones
rails test:system   # Run system tests only

我们可以看到rails test无法运行系统测试。为此,您需要正确运行rails test:system,iirc,您可以使用rails test:system test

运行所有测试