首先,我同意在大多数情况下模拟外部 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
然而,当异常发生时,救援部分永远不会被执行。知道为什么吗?
谢谢!多里安
PS我正在使用rspec 2.6.0