2011-05-04 32 views
4

,我有以下層次結構下一套RSpec的測試中,我想組:遞歸水珠的RSpec的測試文件在運行時

tests/ 
    featA/ 
    t1.rb 
    t2.rb 
    featB/ 
    t3.rb 

但是當我運行

$ rspec tests 

我得到如下:

rspec tests 
No examples were matched. Perhaps {:unless=>#<Proc:[email protected]/usr/lib/ruby/gems/1.8/gems/rspec-core-2.5.1/lib/rspec/core/configuration.rb:51>, :if=>#<Proc:[email protected]/usr/lib/ruby/gems/1.8/gems/rspec-core-2.5.1/lib/rspec/core/configuration.rb:50>} is excluding everything? 

Finished in 0.00003 seconds 
0 examples, 0 failures 

我覺得我要瘋了,但似乎沒有辦法讓RSpec遞歸地測試文件glob?這個功能是否存在?

編輯:

我有一種變通方法做這個:

$ rspec `find tests -name "*.rb"` 

,但我懷疑我不應該。我對嗎?

回答

6

你暴露了我的一個疏忽!在rspec-1中,你可以這樣說:

spec test --pattern "**/*.rb" 

但rspec-2中缺少--pattern選項。我剛剛添加了它(in development),它將包含在rspec-2.6.0版本中。

1

我通常通過rake管理我的規格上運行的RSpec。我Rakefile的相關部分看起來是這樣的:

require 'rspec/core/rake_task' 

RSpec::Core::RakeTask.new(:spec) do |t| 
    t.rspec_opts = ['--color', '-f progress', '-r ./spec/spec_helper.rb'] 
    t.pattern = 'spec/**/*_spec.rb' 
    t.fail_on_error = false 
end 

現在rake spec運行RSpec的用適當的選項;您需要更改t.pattern以符合您要運行的規格。

請務必查看RSpec2 site瞭解更多信息。

+0

我會這樣做,但也許你也可以嘗試類似rspec測試/ **/**。rb? – 2011-05-04 18:09:32

+0

這個特定的調用不起作用,但可能類似。另外,我非常確定,如果遵循RSpec約定並將您的規範命名爲whatever_spec.rb,那麼您就可以運行rspec測試。 – 2011-05-04 18:12:26

+0

前幾天我做了這樣的事情,我想終端會議仍然在我的MBP上,當我回家時我會看。我知道這不是確切但接近。 – 2011-05-04 18:23:39