如何测试API错误?

时间:2012-03-28 19:07:28

标签: ruby-on-rails ruby-on-rails-3 testing

我的rails应用程序与几个不同的API进行对话,我想编写测试以确保在请求出现问题时正确处理错误。例如,如果服务已关闭且无法访问。

有没有办法可以模拟从服务中回来的错误,即使在测试期间可能没问题呢?

2 个答案:

答案 0 :(得分:1)

webmock gem帮助您解决这个问题。针对您的具体问题,请向下滚动到“使用自定义状态消息回复”。

stub_request(:any, "www.example.com").to_return(:status => [500, "Internal Server Error"])

req = Net::HTTP::Get.new("/")
Net::HTTP.start("www.example.com") { |http| http.request(req) }.message # ===> "Internal Server Error"

我已经将这个宝石用于Rspec和Test :: Unit。最大的缺点是,决定哪些请求适用于特定模拟的匹配逻辑并不总能像您期望的那样工作。虽然这是一个小小的抱怨。宝石是净积极的,比尝试从测试用例中获得实时服务要好得多。

答案 1 :(得分:0)

您可以使用模拟而不是真实服务,并使其返回错误。