Ruby on rails 用Ruby测试网络超时和错误

Ruby on rails 用Ruby测试网络超时和错误,ruby-on-rails,ruby,api,wrapper,Ruby On Rails,Ruby,Api,Wrapper,我正在为一个脆弱的第三方API编写一个包装器,并希望有一些方法来测试我的代码的错误处理 当人们想要测试以下内容时,他们会做什么: API响应各种http代码(400-599) 连接超时(主机停机、dns问题等) 有没有正确的方法可以做到这一点?现在我只是使用一个测试主机,添加mod_重写规则,例如: RewriteRule ^500.html$ / [R=500,L,NE] RewriteRule ^501.html$ / [R=501,L,NE] RewriteRule ^404.html

我正在为一个脆弱的第三方API编写一个包装器,并希望有一些方法来测试我的代码的错误处理

当人们想要测试以下内容时,他们会做什么:

  • API响应各种http代码(400-599)
  • 连接超时(主机停机、dns问题等)
有没有正确的方法可以做到这一点?现在我只是使用一个测试主机,添加mod_重写规则,例如:

RewriteRule ^500.html$ / [R=500,L,NE]
RewriteRule ^501.html$ / [R=501,L,NE]
RewriteRule ^404.html$ / [R=404,L,NE]

然后,我会确保我的代码适当地处理了这些用例,但它感觉是错误的,无法测试超时错误。

如果您要测试这样的路由,我强烈建议将rspec和capybara结合起来。rspec框架提供了很大的灵活性,高用户群为您提供了大量的入门空间

我建议您使用mocha(rSpec中的默认值)、rr、flexmock等来模拟/stub api请求。还有一些特殊的模拟lib用于处理HTTP请求,但我不确定您是否可以模拟整个响应或仅模拟主体。

据我所知,capybara用于驱动站点。我在寻找一个假响应和假网络延迟…等等。我错了吗?嗯,我把它扔进去了,因为如果你要进行测试,你应该使用它进行集成测试。RSpec,使用上面提到的@Sebastian(mocha或任何其他模拟api)将完成这项工作。还可以查看路由规范。我想我不明白当这些请求发送到第三方api时,路由测试如何具有相关性。类似于存根(Restclient)。获取{raise SocketError.new(“测试网络错误”)},假设您使用rr和Restclient。