我创建了一个Gem项目并添加了minitest并保护了依赖项:
spec.add_development_dependency "minitest", "~> 5.0.7"
spec.add_development_dependency 'guard-minitest'
我使用minitest-spec,因此所有受测试的代码都位于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
)时,guard会检测到更改,但是没有执行测试:
# Running:
Finished in 0.000824s, 0.0000 runs/s, 0.0000 assertions/s.
0 runs, 0 assertions, 0 failures, 0 errors, 0 skips
答案 0 :(得分: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
的映射不起作用。