首先,我同意在大多数情况下模拟外部 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