【问题标题】:How to implement Retry on RSPEC Please?请问如何在 RSPEC 上实现重试?
【发布时间】:2020-11-03 18:32:21
【问题描述】:

如果当时服务器不可用,我想执行多次重试!。有可能吗?

require 'httparty'
require 'pry'
require_relative '../../env.rb'

RSpec.describe 'Validar a api de usuários' do

  it 'Deve retornar 200 para API DRIVE THRU' do
    response = HttParty.get("#{URLS['drive_thru']}/v1/health/live")
    expect(response.code).to eql(200)
    expect(response.parsed_response).to be_nil
  end
end

【问题讨论】:

  • 这与您在常规代码中重试的方式相同。例如。带有救援或条件的循环。您要重试的错误案例是什么?
  • 朋友你好,我真的不知道该怎么做。我希望如果 api 无法运行 3X 并且服务器不可用,它将显示消息:“服务器不可用”
  • 但具体细节很重要。当服务器不可用时,现在究竟发生了什么?你得到一个 SocketError 引发吗?还是只是不同的响应代码?
  • Hi Max Morning!!.. 致命:无法访问 'gitlab.com/grupofleury/drive-thru/automacao-api.git':请求的 URL 返回错误:503
  • Hi Max Morning!!.. 致命:无法访问 'gitlab.com/grupofleury/drive-thru/automacao-api.git':请求的 URL 返回错误:503 – Silvio Aulik 2 天删除

标签: ruby api rspec


【解决方案1】:

通用重试系统可能如下所示:

tries_left = 3
loop do
  break if tries_left == 0
  begin
    result = do_thing
  rescue SomeError => e
    tries_left -= 1
  end
end
  

您必须将 do_thingSomeError 替换为您的 HTTParty 调用以及引发的任何错误。

另见How can I handle errors with HTTParty?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-16
    • 2021-09-28
    • 2019-03-09
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多