所以我试图使用guard rspec仅用于ruby,而不是用于rails。测试运行正常但唯一的问题是它只查找spec.rb文件,并且不查找实际文件。所以我有一个失败的arabic_to_roman.rb和arabic_to_roman_spec.rb。 Guardfile安装在目录roman_numerals_kata下。它只查找_spec.rb文件而不是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
答案 0 :(得分:2)
目录的结构是什么?
基于此配置,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/*
希望这会有所帮助:)