我如何告诉VCR我希望它完全忽略spec文件?
我读过一篇post on Google Groups,它建议要么允许真正的超文本传输协议请求,要么显式关闭录像机。
在我看来,更有用的是录像机不要插手,除非规范有:vcr元数据标签。我不想在before/after中一次又一次地打开录像机,因为我不知道它是不是事先就打开了。我不想允许真正的HTTP请求跨所有规范,只允许某些特定的规范。
有什么办法可以让录像机更有选择性吗?
发布于 2016-05-03 02:56:29
这不是最好的解决方案,但是您可以使用实例变量将配置返回到其原始设置
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。
发布于 2015-06-08 19:38:17
当然,在您的配置块中添加:
VCR.configure do |c|
c.allow_http_connections_when_no_cassette = true
end这是AFAIK,VCR对你的测试套件唯一的选择。请参阅docs。
不过,最有可能的情况是,您真的应该考虑这样的行为的record modes,所以它是可行的。
发布于 2020-07-08 19:11:53
根据Casey的回答,我想出了这个帮助模块:
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然后可以从任何规范中调用它,如下所示:
VcrHelpers.perform_without_cassette do
some_http_request
endhttps://stackoverflow.com/questions/30707965
复制相似问题