首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用RSpec/webmock对各种状态代码进行存根请求

使用RSpec/webmock对各种状态代码进行存根请求
EN

Stack Overflow用户
提问于 2016-05-19 15:05:03
回答 1查看 3.5K关注 0票数 1

我需要将请求存根到一个外部API,使用webmock/webmock,但我需要测试一些响应(200、404、503等)。干净地做这件事最好的方法是什么?我第一个讨厌的想法是,您可以在标题中设置一些独特的内容,比如一个惟一的用户代理字符串,以输入它,但它会导致我编写这样糟糕的代码:

代码语言:javascript
复制
# spec/spec_helper.rb
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
require 'the_geek'
require 'webmock/rspec'
WebMock.disable_net_connect!(allow_localhost: true)
RSpec.configure do |config|
  config.before(:each) do
    stub_request(:get, /www.boardgamegeek.com/).
      with(headers: {'Accept'=>'*/*', 'User-Agent'=>'SOME 200 STRING'}).
      to_return(status: 200, body: "stubbed response", headers: {})

    stub_request(:get, /www.boardgamegeek.com/).
      with(headers: {'Accept'=>'*/*', 'User-Agent'=>'SOME 404 STRING'}).
      to_return(status: 404, body: "Not Found", headers: {})

    stub_request(:get, /www.boardgamegeek.com/).
      with(headers: {'Accept'=>'*/*', 'User-Agent'=>'SOME 503 STRING'}).
      to_return(status: 503, body: "Not Found", headers: {})
  end
end

我看过VCR,但据我所知,很难用它来模拟和捕获错误。是否有另一种简洁明了的方法来存根处理多个响应代码的请求?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-19 15:38:14

无论您使用什么库来生成HTTP请求,都有一种返回响应状态的方法。我将使用使用RSpec存根对库进行存根,以返回每个示例中所需的状态(以及有关响应的任何其他内容)。除了需要比webmock方法更少的代码之外,这还具有这样的优势:您需要阅读的所有理解每个示例的内容都在示例中,而不是在spec_helper.rb中。

如果这还不清楚,请随意添加提出请求的代码到您的问题,我可以给出一个例子,如何在这里存根。

我根本不担心需要返回错误状态的规范中的webmock;它仍然会阻止您发出HTTP请求,但您不会这样做,因为您会将它们排除在外。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37327213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档