Skip to main content
 首页 » 编程设计

ruby-on-rails中Guard-Minitest + Spring 未按预期工作

2024年11月24日12sxdcgaq8080

我有一个 Rails 4.0.2 项目,我使用的是guard 4.7.5、guard-minitest 2.2.0 和 spring 1.1.0。

当我的 Guardfile 读取时:

guard :minitest, spring: true do 
  … 
end 

我在运行守卫时获取 spring 使用信息。

根据 guard 部长 README ,如果我的 Guardfile 内容如下:

guard :minitest, spring: 'rake test' do 
  … 
end 

它运行所有默认测试(请参阅rake -T)。

事实上,当单独运行rake test时,无论我之后输入什么内容,它总是运行默认测试。运行 bundle exec rake test [whatever] 会产生相同的结果。

我错过了什么?

请您参考如下方法:

guard :minitest, spring: 'rake test' do 
  … 
end 

适用于我的设置(即,它只运行正确的测试),尽管它没有在通知程序中显示详细的统计信息(仅通过/未通过)。

你的 do block 中有合适的观察者吗? 我基本上使用的是 Guard init 给我的东西,但我取消了 Rails 4 下观察者的注释,注释掉了其余的部分。我完整的 minitest do block :

guard :minitest, spring: 'rake test' do 
 
   #Rails 4 
   watch(%r{^app/(.+)\.rb$})                               { |m| "test/#{m[1]}_test.rb" } 
   watch(%r{^app/controllers/application_controller\.rb$}) { 'test/controllers' } 
   watch(%r{^app/controllers/(.+)_controller\.rb$})        { |m| "test/integration/#{m[1]}_test.rb" } 
   watch(%r{^app/views/(.+)_mailer/.+})                   { |m| "test/mailers/#{m[1]}_mailer_test.rb" } 
   watch(%r{^lib/(.+)\.rb$})                               { |m| "test/lib/#{m[1]}_test.rb" } 
   watch(%r{^test/.+_test\.rb$}) 
   watch(%r{^test/test_helper\.rb$}) { 'test' } 
 
end 

我正在使用:

  • ruby 2.0.0p451(2014-02-24 修订版 45167)[x86_64-linux]
  • guard-minitest-2.2.0
  • 守卫版本2.6.0
  • Spring 版本 1.1.2
  • Rails 4.1.0
  • Minitest-5.5.5