我有一個腳本,用於封裝RSpec 3.4.4中的測試,並使它們在十秒後超時。如何設置全球RSpec元數據?
TIMEOUT = 10
RSpec.configure do | config |
config.around do |example|
timeout = Float(example.metadata[:timeout]) rescue TIMEOUT
begin
Timeout.timeout(timeout) { example.run }
rescue Timeout::Error
skip "Timed out after #{timeout} seconds"
end
end
end
這個腳本是在一箇中心位置 - ~/lib/spec_helper.rb
- 並且是在我的倉庫require
d由spec_helper
秒。
我想兩秒或(另一個例子)不是在所有後,能夠在一個倉庫範圍級別配置example.metadata[:timeout]
,有所有其規格超時(例如)。
我試過將它設置爲.rspec
中的一個選項 - 這對我來說是一個理想的解決方案 - 但它當然不能識別這樣的自定義選項。我希望命令行能夠完成同樣的事情。
有沒有辦法爲測試套件中的所有示例設置元數據?
「在這個特殊的例子設置超時爲零將禁止使用超時。」實際上,正如你[最初]寫的那樣,將超時設置爲零將停止該示例的運行。幸運的是,你所需要做的就是除去'unless'子句,因爲'Timeout.timeout(0){...}'不會超時。 – PJSCopeland
啊我其實不太確定...我會改變答案 – David