2012-12-26 100 views
0

所以我試圖使用警衛rspec只爲紅寶石,而不是鐵軌。測試運行良好,但唯一的問題是它只查找spec.rb文件,並沒有查找實際的文件。所以我有一個失敗的arabic_to_roman.rb和arabic_to_roman_spec.rb。 Guardfile安裝在roman_numerals_kata目錄下。它只查找_spec.rb文件而不查找arabic_to_roman.rb。這裏是Guardfile的樣子運行Guard rspec紅寶石卡塔

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 

回答

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

希望這有助於:)

+0

目錄結構 arabic_numerals_kata Guardfile arabic_to_roman.rb 規範 arabic_to_roman_spec.rb 這應該是罰款權?另外我想通了,如果我編寫代碼在arabic_to_roman_spec.rb文件它的作品。所以它看起來像它唯一的掃描_spec文件,而不是由於某種原因實際的arabic_to_roman.rb文件。 – TakaGoto

+0

根據Guardfile設置,arabic_to_roman.rb應該嵌套在一個'lib'文件夾中供它觀看。或者將Guardfile中的行更改爲:watch(%r {^(。+)\。rb $}){| m | 「spec /#{m [1]} _ spec.rb」}'。我建議模仿默認的文件夾佈局,儘管如我的答案中所示,而不是像我剛剛那樣調整guardfile。 – ZPH

+0

當這解決了您的問題時,請將問題標記爲已回答,以幫助未來人員提出類似問題。 – ZPH