gpt4 book ai didi

rspec - 如果发生超时::错误,则自动重新运行 rspec 示例

转载 作者:行者123 更新时间:2023-12-04 23:28:56 24 4
gpt4 key购买 nike

首先,我同意在大多数情况下模拟外部 API 调用是正确的做法。但是在这种情况下不是。

我是随机的 Timeout::Error我的一些测试中出现异常,我希望能够忽略它们并自动重新运行该示例。只有在尝试失败 10 次后才应报告失败。

应报告任何其他异常和失败。

我尝试使用全局 around(:each) 来实现这种行为。 Hook 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

然而,当发生异常时,救援部分永远不会被执行。知道为什么吗?

谢谢!
多里安

附言我正在使用 rspec 2.6.0

最佳答案

您无法挽救 around 中的异常块,因为它们不传播。但是,如果您绝对必须重新运行失败的示例,您可以从 @example 中 pry 出当前异常。 , 像这儿:

https://github.com/jnicklas/capybara/blob/c21d5eb2375b610ac13f54cf240e59c80918a2f1/spec/spec_helper.rb#L16

它看起来很恶心。我们的借口是我们上游库中的一个错误,但如果可能的话,我通常会避免这种情况。

关于rspec - 如果发生超时::错误,则自动重新运行 rspec 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7887718/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com