【问题标题】:Let VCR skips URI :让 VCR 跳过 URI:
【发布时间】:2013-06-03 16:20:33
【问题描述】:

我需要 VCR 跳过 https://api.github.com/users/lapaty/starred 调用真正的外部 API,同时继续模拟类似的路径,如 https://api.github.com/repos/lgs/elasticrepo

到目前为止,我尝试了以下方法,但没有成功:

VCR.configure do |c|
  ... 
  c.ignore_hosts 'api.github.com/users/lapaty/starred'
end

VCR.configure do |c|
  ... 
  c.ignore_request do |request|
    URI(request.uri).uri == 'https://api.github.com/users/lapaty/starred'
  end  
end     

【问题讨论】:

    标签: ruby api testing mocking vcr


    【解决方案1】:

    c.ignore_hosts 'api.github.com/users/lapaty/starred' 永远不会工作,因为api.github.com/users/lapaty/starred 不是主机。

    对于您尝试的第二件事,URI(request.uri).uri 部分是不必要的——您将字符串解析为 uri,然后从中获取字符串表示形式(这应该只给您request.uri)。我认为这应该工作:

    VCR.configure do |c|
      c.ignore_request do |request|
        request.uri == 'https://api.github.com/users/lapaty/starred'
      end  
    end
    

    如果它不起作用,则表明 URI 字符串与您想象的不完全一样 "https://api.github.com/users/lapaty/starred"。您可以在 ignore_request 块中添加一些 puts 日志以查看正在发出的请求,或者您可以使用 debug_logger 选项详细了解 VCR 正在做什么以及为什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-12
      • 2013-04-04
      • 2018-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-02
      • 1970-01-01
      相关资源
      最近更新 更多