gpt4 book ai didi

ruby - WebMock 模拟失败的 API(没有互联网,超时++)

转载 作者:数据小太阳 更新时间:2023-10-29 06:34:30 25 4
gpt4 key购买 nike

我正在尝试使用 webmock 模拟 Web API 的意外行为,例如未找到服务器和超时。

执行此操作的最佳方法是什么?我能想到的就是做这样的事情:

stubbed_request = stub_request(:get, "#{host}/api/something.json").
with(:headers => {'Accept'=>'*/*', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}).
to_return(:status => [500, "Internal Server Error"])

这应该适用于 404 等问题,但我如何测试超时未找到服务器/离线服务器以及无互联网连接 ?

最佳答案

经过一番挖掘,我找到了一些解决方案。

显然,您可以将 to_return(...) 更改为 to_timeout,这将引发超时错误。您还可以使用 to_raise(StandardError)。有关完整引用,请参阅 https://github.com/bblimke/webmock#raising-timeout-errors .

超时,或者找不到服务器,例如:

stubbed_request = stub_request(:get, "#{host}/api/something.json").
with(:headers => {'Accept'=>'*/*', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}).
to_timeout

引发标准错误,或无互联网/其他异常,示例:

stubbed_request = stub_request(:get, "#{host}/api/something.json").
with(:headers => {'Accept'=>'*/*', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}).
to_raise(StandardError)

#Error example 2:
stubbed_request = stub_request(:get, "#{host}/api/something.json").
with(:headers => {'Accept'=>'*/*', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}).
to_raise("My special error")

好了,毕竟不是太难。


我不知道我第一次怎么没找到这个。无论如何,希望有一天这能帮助某人。

关于ruby - WebMock 模拟失败的 API(没有互联网,超时++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25552239/

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