如何告诉VCR我希望它完全忽略spec文件?
我在Google网上论坛上发布了一条帖子,建议允许真正的HTTP请求,或明确关闭VCR.
在我看来,除非规范具有:vcr元数据标签,否则VCR不会嗤之以鼻.我不想关闭VCR并重新打开before/ after,因为我不知道它是否已预先打开.我不想在所有规范中允许真正的HTTP请求,只是某些特定的规范.
有没有办法让VCR更具选择性?
Cas*_*son 10
这不是最优雅的解决方案,但您可以使用实例变量将配置返回到其原始设置
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
Run Code Online (Sandbox Code Playgroud)
我发现这对我最初启动并运行 API 并希望能够调试我发出的请求很有帮助。一旦我让 API 正常工作,我就可以删除之前和之后的块,并像往常一样使用 VCR。
当然,在你的配置块中添加:
VCR.configure do |c|
c.allow_http_connections_when_no_cassette = true
end
Run Code Online (Sandbox Code Playgroud)
这是AFAIK VCR对您的测试套件的唯一选择.查看文档.
最有可能的是你应该考虑这样的行为记录模式,这样才有可行.
就我而言,我不想允许非 VCR 规格的真正 HTTP 连接,我只是希望对这些规格禁用 VCR,以便 Webmock 直接处理它们。这对我有用:
RSpec.configure do |config|
config.around do |example|
if example.metadata.key?(:vcr)
example.run
else
VCR.turned_off { example.run }
end
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2338 次 |
| 最近记录: |