首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭特定规格的VCR

关闭特定规格的VCR
EN

Stack Overflow用户
提问于 2015-06-08 19:27:53
回答 5查看 4.4K关注 0票数 7

我如何告诉VCR我希望它完全忽略spec文件?

我读过一篇post on Google Groups,它建议要么允许真正的超文本传输协议请求,要么显式关闭录像机。

在我看来,更有用的是录像机不要插手,除非规范有:vcr元数据标签。我不想在before/after中一次又一次地打开录像机,因为我不知道它是不是事先就打开了。我不想允许真正的HTTP请求跨所有规范,只允许某些特定的规范。

有什么办法可以让录像机更有选择性吗?

EN

回答 5

Stack Overflow用户

发布于 2016-05-03 02:56:29

这不是最好的解决方案,但是您可以使用实例变量将配置返回到其原始设置

代码语言:javascript
复制
describe "A group of specs where you want to allow http requests" do
  before do
    VCR.configure do |c|
      @previous_allow_http_connections = c.allow_http_connections_when_no_cassette?
      c.allow_http_connections_when_no_cassette = true
    end
  end

  after do
    VCR.configure do |c|
      c.allow_http_connections_when_no_cassette = @previous_allow_http_connections
    end
  end

  # Specs in this block will now allow http requests to be made

end

我发现这对我在最初启动和运行API时很有帮助,并且希望能够调试我发出的请求。一旦我让API正常工作,我就可以删除之前和之后的块,并像往常一样使用VCR。

票数 10
EN

Stack Overflow用户

发布于 2015-06-08 19:38:17

当然,在您的配置块中添加:

代码语言:javascript
复制
VCR.configure do |c|
  c.allow_http_connections_when_no_cassette = true
end

这是AFAIK,VCR对你的测试套件唯一的选择。请参阅docs

不过,最有可能的情况是,您真的应该考虑这样的行为的record modes,所以它是可行的。

票数 8
EN

Stack Overflow用户

发布于 2020-07-08 19:11:53

根据Casey的回答,我想出了这个帮助模块:

代码语言:javascript
复制
module VcrHelpers
  def self.perform_without_cassette
    VCR.configure { |c| c.allow_http_connections_when_no_cassette = true }
    yield
  ensure
    VCR.configure { |c| c.allow_http_connections_when_no_cassette = false }
  end
end

然后可以从任何规范中调用它,如下所示:

代码语言:javascript
复制
VcrHelpers.perform_without_cassette do
 some_http_request
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30707965

复制
相关文章

相似问题

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