让VCR跳过URI:

时间:2013-06-03 16:20:33

标签: ruby api testing mocking vcr

我让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     

1 个答案:

答案 0 :(得分: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正在做什么以及为什么要这样做。