导轨测试正常,但在带防护装置运行时,它们会失败



我在这里创建了一个示例应用程序,其中包含此问题https://github.com/jean-francois-labbe/rails-guard-not-working

它只是一个简单的脚手架,带有导轨 5.1.4 和红宝石 2.4.2 rails g scaffold user username firstname creation:datetime rails db:migrate bundle exec rails test # => tests ok bundle exec guard # => 3 tests will fail

我在 Gemfile 中添加了guardguard-minitest

有人已经遇到过这个问题吗?

测试结果如下:

~/Workspace/guard-tests-fail(master ✗) bundle exec rails test
Run options: --seed 23398
Running:
........
Finished in 0.649120s, 12.3244 runs/s, 15.4055 assertions/s.
8 runs, 10 assertions, 0 failures, 0 errors, 0 skips

~/Workspace/guard-tests-fail(master ✗) bundle exec guard     
19:41:31 - INFO - Guard::Minitest 2.4.6 is running, with Minitest::Unit 5.10.3!
19:41:31 - INFO - Running: all tests
Run options: --guard --seed 38654
Running:
.....F
Failure:
MeetingsControllerTest#test_should_create_meeting [/home/jeff/Workspace/guard-tests-fail/test/controllers/meetings_controller_test.rb:19]:
"Meeting.count" didn't change by 1.
Expected: 3
  Actual: 2

bin/rails test test/controllers/meetings_controller_test.rb:18
F
Failure:
MeetingsControllerTest#test_should_destroy_meeting [/home/jeff/Workspace/guard-tests-fail/test/controllers/meetings_controller_test.rb:42]:
"Meeting.count" didn't change by -1.
Expected: 1
  Actual: 2

bin/rails test test/controllers/meetings_controller_test.rb:41
F
Failure:
MeetingsControllerTest#test_should_update_meeting [/home/jeff/Workspace/guard-tests-fail/test/controllers/meetings_controller_test.rb:38]:
Expected response to be a <3XX: redirect>, but was a <422: Unprocessable Entity>

bin/rails test test/controllers/meetings_controller_test.rb:36


Finished in 1.261359s, 6.3424 runs/s, 6.3424 assertions/s.
8 runs, 8 assertions, 3 failures, 0 errors, 0 skips
19:41:35 - INFO - Guard is now watching at '/home/jeff/Workspace/guard-tests-fail'

使用与导轨测试相同的种子进行防护

~/Workspace/guard-tests-fail(master ✗) bundle exec guard
21:36:17 - INFO - Guard::Minitest 2.4.6 is running, with Minitest::Unit 5.10.3!
21:36:17 - INFO - Running: all tests
Run options: --guard --seed 23398
# Running:
...F
Failure:
MeetingsControllerTest#test_should_destroy_meeting [/home/jeff/Workspace/guard-tests-fail/test/controllers/meetings_controller_test.rb:42]:
"Meeting.count" didn't change by -1.
Expected: 1
  Actual: 2

bin/rails test test/controllers/meetings_controller_test.rb:41
..F
Failure:
MeetingsControllerTest#test_should_update_meeting [/home/jeff/Workspace/guard-tests-fail/test/controllers/meetings_controller_test.rb:38]:
Expected response to be a <3XX: redirect>, but was a <422: Unprocessable Entity>

bin/rails test test/controllers/meetings_controller_test.rb:36
F
Failure:
MeetingsControllerTest#test_should_create_meeting [/home/jeff/Workspace/guard-tests-fail/test/controllers/meetings_controller_test.rb:19]:
"Meeting.count" didn't change by 1.
Expected: 3
  Actual: 2

bin/rails test test/controllers/meetings_controller_test.rb:18


Finished in 1.397142s, 5.7260 runs/s, 5.7260 assertions/s.
8 runs, 8 assertions, 3 failures, 0 errors, 0 skips
21:36:21 - INFO - Guard is now watching at '/home/jeff/Workspace/guard-tests-fail'
[1] guard(main)> 

重现步骤

1)只需创建一个新项目(rails新演示)

2) 生成脚手架(轨道 G 脚手架用户用户名)

3)导轨测试=>导轨测试正常

4) 在宝石档案中添加宝石"守卫"和宝石"守卫最小测试"。并运行捆绑包

5) 运行守卫初始化最小测试。

6)捆绑执行保护=>,你的测试将失败

堆栈跟踪

导轨测试

.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:107:in `block (3 levels) in run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:204:in `capture_exceptions'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:104:in `block (2 levels) in run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:255:in `time_it'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:103:in `block in run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:350:in `on_signal'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:275:in `with_info_handler'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:102:in `run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:839:in `run_one_method'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:324:in `run_one_method'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:311:in `block (2 levels) in run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:310:in `each'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:310:in `block in run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:350:in `on_signal'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:337:in `with_info_handler'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:309:in `run'
.gem/ruby/2.4.1/gems/railties-5.1.4/lib/rails/test_unit/line_filtering.rb:9:in `run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:159:in `block in __run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:159:in `map'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:159:in `__run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:136:in `run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:63:in `block in autorun'
.gem/ruby/2.4.1/gems/spring-2.0.2/lib/spring/application.rb:171:in `fork'
.gem/ruby/2.4.1/gems/spring-2.0.2/lib/spring/application.rb:171:in `serve'
.gem/ruby/2.4.1/gems/spring-2.0.2/lib/spring/application.rb:141:in `block in run'
.gem/ruby/2.4.1/gems/spring-2.0.2/lib/spring/application.rb:135:in `loop'
.gem/ruby/2.4.1/gems/spring-2.0.2/lib/spring/application.rb:135:in `run'
.gem/ruby/2.4.1/gems/spring-2.0.2/lib/spring/application/boot.rb:19:in `<top (required)>'
.rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
.rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'

警卫

.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:107:in `block (3 levels) in run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:204:in `capture_exceptions'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:104:in `block (2 levels) in run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:255:in `time_it'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:103:in `block in run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:350:in `on_signal'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:275:in `with_info_handler'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:102:in `run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:839:in `run_one_method'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:324:in `run_one_method'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:311:in `block (2 levels) in run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:310:in `each'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:310:in `block in run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:350:in `on_signal'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:337:in `with_info_handler'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:309:in `run'
.gem/ruby/2.4.1/gems/railties-5.1.4/lib/rails/test_unit/line_filtering.rb:9:in `run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:159:in `block in __run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:159:in `map'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:159:in `__run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:136:in `run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:63:in `block in autorun'
这是

guard-minitestspring的问题。转到您的Guardfile并将此spring命令配置添加到初始化中:

# Guardfile
guard "minitest", spring: "bin/rails test" do
  # ...
end

这里有一些半相关的讨论。自述文件guard-minitest说这是"由于如何处理参数和对选定文件运行测试的复杂性"。

最新更新