Dor*_*ian 4 rspec rspec2 rspec-rails
首先,我同意模仿外部API调用是大多数时候做的正确的事情.但不是在这种情况下.
我Timeout::Error在一些测试中得到随机异常,我希望能够忽略它们并自动重新运行该示例.只有在10次尝试失败后才应报告失败.
应报告任何其他异常和故障.
我试图使用文件中的全局around(:each)钩子来实现此行为spec/spec_helper.rb:
RSpec.configure do |config|
config.around(:each) do |example|
attempts = 0
passed = false
begin
attempts +=1
example.run
passed = true
rescue Timeout::Error => e
raise e if attempts >= 10
end until passed
end
end
Run Code Online (Sandbox Code Playgroud)
但是,当发生异常时,救援部分永远不会被执行.知道为什么吗?
谢谢!多利安
PS我正在使用rspec 2.6.0
您无法在around块中挽救异常,因为它们不会传播.但是,如果您必须重新运行失败的示例,则可以删除当前的异常@example,如下所示:
它看起来很讨厌.我们的借口是我们上游图书馆的一个错误,但如果可能的话,我通常会避免这种情况.
| 归档时间: |
|
| 查看次数: |
997 次 |
| 最近记录: |