2011-09-28 39 views
1

在Rspec的,我們可以設置一些全局像這樣的行爲,前/後:微調rspec的

config.before(:each) {blah...} 

我可以說:

config.before(:each, :type => :model) {blah...} 

爲了有該程序只運行與模型試驗 但是,這是行不通的:

config.before(:each, :type => [:model, :controller]) {blah...} 

我要重複同樣的事情兩次,一個是模型和一個FO控制器。有沒有其他方法可以做到這一點?由於

回答

6

看着RSpec的過濾器:https://www.relishapp.com/rspec/rspec-core/docs/hooks/filters

他們只是匹配任意元數據,和RSpec護欄添加元數據:類型=>:模型(或其他)爲各組測試。

所以,這個配置

config.before(:each, :type => [:model, :controller]) {blah...} 

只會用這種元數據(匹配相同的值)匹配測試:

describe "matching tests", :type => [:model, :controller] {blah...} 

這基本上意味着的回答你的問題是NO

無論如何,你可以很容易地用這樣的DIY吧:

before_controller_and_model = lambda do 
    do_stuff 
end 

config.before(:each, :type => :model)  { before_controller_and_model.call } 
config.before(:each, :type => :controller) { before_controller_and_model.call } 
+0

這個答案應該被接受。來吧,如果你打算打擾別人來幫助你,你應該繼續給予正確答案的功勞。 –