我的 Rails 应用程序与几个不同的 API 对话,我想编写测试以确保错误得到正确处理,以防请求出现问题。例如,如果服务已关闭且无法访问。
有没有一种方法可以模拟从服务返回的错误,即使它在测试期间可能没问题?
最佳答案
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"
我已将此 gem 与 Rspec 和 Test::Unit 一起使用。最大的缺点是决定哪些请求适用于特定模拟的匹配逻辑并不总是像您期望的那样工作。不过,这是一个小问题。该 gem 是一个净阳性,比尝试从测试用例中点击实时服务要好得多。
关于ruby-on-rails - 如何测试 API 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9914068/