为红宝石卡塔运行Guard rspec

时间:2012-12-26 19:57:59

标签: ruby-on-rails ruby rspec

所以我试图使用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 

1 个答案:

答案 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/*

中查找它

希望这会有所帮助:)