所以我试图使用守卫rspec只是为ruby,而不是为rails。测试运行良好,但唯一的问题是它只查找spec.rb文件,而不查找实际文件。我有一个失败的arabic_to_roman。Rb和arabic_to_roman_spec.rb。Guardfile安装在roman_numerals_kata目录下。它只查找_spec。而不是arabic_to_roman.rb文件。下面是Guardfile的样子
1 # A sample Guardfile
2 # More info at https://github.com/guard/guard#readme
3
4 guard 'rspec' do
5 watch(%r{^spec/.+_spec.rb$})
6 watch(%r{^lib/(.+).rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
7 watch('spec/spec_helper.rb') { "spec" }
8
9 # Rails example
10 watch(%r{^app/(.+).rb$}) { |m| "spec/#{m[1]}_spec.rb" }
11 watch(%r{^app/(.*)(.erb|.haml)$}) { |m| "spec/#{m[1]}# {m[2]}_spec.rb" }
12 watch(%r{^app/controllers/(.+)_(controller).rb$}) { |m| ["spec/routing/# {m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
13 watch(%r{^spec/support/(.+).rb$}) { "spec" }
14 watch('config/routes.rb') { "spec/routing" }
15 watch('app/controllers/application_controller.rb') { "spec/controllers" }
16
17 # Capybara features specs
18 watch(%r{^app/views/(.+)/.*.(erb|haml)$}) { |m| "spec/features/#{m[1]}_spec.rb" }
19
20 # Turnip features and steps
21 watch(%r{^spec/acceptance/(.+).feature$})
22 watch(%r{^spec/acceptance/steps/(.+)_steps.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
23 end
24
您的目录结构是什么?
基于这个配置,Guard会在lib目录下查找任何ruby文件,并执行嵌套在spec/lib/中的匹配测试。这些细节在guardfile的这一行:watch(%r{^lib/(.+).rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
.
使用这个Guardfile(它匹配我的标准项目布局),你应该有以下文件夹布局:
BASE_DIR
├── Guardfile
├── lib
│ ├── README
│ └── arabic_to_roman.rb
├── spec
│ ├── lib
│ │ └── arabic_to_roman_spec.rb
│ └── spec_helper.rb
如果不希望遵循标准文件夹布局,则可以像这样修改Guardfile
guard 'rspec' do
watch(%r{^spec/.+_spec.rb$})
watch(%r{^(.+).rb$}) { |m| "spec/#{m[1]}_spec.rb" }
watch('spec/spec_helper.rb') { "spec" }
end
注意,第二个watch
命令是在basedir而不是在lib/*
希望这对你有帮助