2011-04-11 100 views
3

在_spec.rb文件我設立一個排除過濾器是這樣的:後來我可以在rspec中使用多個排除過濾器嗎?

RSpec.configure do |config| 
    # we need determine this once at the very front 
    # and the result be available in the instance 
    server_success = server1_available? 

    config.exclusion_filter = { 
    :svr1 => lambda {|what| 
     case what 
     when :available 
     !server_success 
     end 
    } 
    } 
end 

,然後在文件中我

describe :get_items_by_client, :svr1 => :available do 

,以防止測試執行,如果服務器ISN」 t可用。

這一切工作正常,如果我單獨運行spec文件。然而,我在另一個文件中有類似的代碼來控制訪問不同服務器的測試,並且當我運行它們時,我只能看到每個服務器檢查都已完成(我有一個放入「serverX_available?」代碼),但僅限於一組測試被排除在外(即使這兩個服務器都不可用)。

我開始認爲你可以只有一個排除過濾器,但我可以在任何地方找到任何與之相關的文檔。這是可行的每個文件的基礎?我可以在一個支持文件中包含一個複雜的過濾器,但是當我僅僅運行一個spec文件時,如何將它合併到一起?

理想情況下,我想找到一個每個文件都有效的表單,但讓我來做可用性檢查一次,因爲這是一個比較昂貴的檢查,我在測試中有幾個例子是由它控制的。

回答

0
config.filter_run_excluding :cost => true 
config.filter_run_excluding :slow => true 

試試這個,這個工程。

相關問題