我有一个脚本,用于封装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