ruby-on-rails - 如何测试 API 错误?

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

我的 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/

相关文章:

ruby-on-rails - 如何在 Rails 4.2 中添加 JSON 文件导出功能

ruby-on-rails - 如何更改集成测试中的夹具值

ruby-on-rails - Rails 4 - 无需身份验证的 Json 渲染

mysql - Rails 3 在 2 个表之间进行连接

android - Android-Robotium 可以做哪些类型的测试

ruby-on-rails - Mongoid 删除嵌入式文档不会持续存在

ruby-on-rails - Rails 3.1.x-image_tag在生产模式下不使用预编译的文件

ruby-on-rails - Rails 3.1 + Heroku : Can someone help me decipher this Heroku log?

java - 如何在 testng extent-report 版本 2.41.2(相关代码)中添加数据提供者值

javascript - 编写 Ember Octane Component 测试以检查我提交表单后状态是否正确?