0

我需要 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     
4

1 回答 1

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"与您想象的不完全一样。您可以在块中添加一些puts日志记录ignore_request以查看正在发出的请求,或者您可以使用debug_logger选项详细了解 VCR 正在做什么以及为什么。

于 2013-06-04T16:10:44.603 回答