2013-12-22 31 views
0

我创建了一个宝石项目,并添加MINITEST和保护的依赖关系:护MINITEST没有找到测试执行当被测课改

spec.add_development_dependency "minitest", "~> 5.0.7" 
    spec.add_development_dependency 'guard-minitest' 

我使用MINITEST规格所以在测试中所有的代码位于lib目录中,并且所有测试都在spec中。

我创建了一个Guardfile与相应的设置:

guard :minitest do 
    # with Minitest::Spec 
    watch(%r{^spec/(.*)_spec\.rb}) 
    watch(%r{^lib/(.+)\.rb})   { |m| "spec/#{m[1]}_spec.rb" } 
    watch(%r{^spec/spec_helper\.rb}) { 'spec' } 
end 

每次我修改规范(比如spec/shell/remote_shell_spec.rb)测试正确执行。

# Running: 

....... 

Fabulous run in 0.064205s, 109.0261 runs/s, 529.5554 assertions/s. 

7 runs, 34 assertions, 0 failures, 0 errors, 0 skips 

的问题是,当我在测试修改代码(比如lib/shell/remote_shell.rb)后卫检测的变化,但不执行测试:

# Running: 



Finished in 0.000824s, 0.0000 runs/s, 0.0000 assertions/s. 

0 runs, 0 assertions, 0 failures, 0 errors, 0 skips 
+0

这看起来不错。你确定你没有任何错别字吗? '%r {^ lib /(。+)\。rb}'将匹配'lib/shell/remote_shell.rb',捕获组将会是'shell/remote_shell',将被转换为'spec/shell/remote_shell_spec .rb'。 – Netzpirat

+0

我直接从Guardfile复制/粘贴代码。我也让Guardfile输出'm [1]'的值到一个文件中。看起来是正确的('shell/remote_shell')。 – Jef

+0

源代码可在这里找到:https://github.com/servebox/electric_sheeps – Jef

回答

2

在您的链接的源代码看,我看你的代码被放置在lib/electric_sheeps/shell/remote_shell.rb中,而不是如lib/shell/remote_shell.rb所示,因此您的规范必须放置在spec/electric_sheeps/shell/remote_shell_spec.rb中,以便映射工作。

你也可以重写观察者因此会忽略模块文件夹

guard :minitest do 
    # with Minitest::Spec 
    watch(%r{^spec/(.*)_spec\.rb}) 
    watch(%r{^lib/electric_sheeps/(.+)\.rb})   { |m| "spec/#{m[1]}_spec.rb" } 
    watch(%r{^spec/spec_helper\.rb}) { 'spec' } 
end 

但后来lib/electric_sheeps.rb映射是行不通的。

+0

现在似乎很明显......谢谢! – Jef