有没有办法让VCR在Rails应用程序中通过rspec调用时才能激活?它适用于我的测试,但我不希望它在这些测试之外拦截请求。
如果我使用客户端连接到我的应用程序并且应用程序正在调用外部Web服务,则 禁用Real HTTP连接。
谢谢, 马克
答案 0 :(得分:2)
确保您的VCR gem
设置在正确的组
# Gemfile
group :test do
......
gem 'vcr'
end
答案 1 :(得分:1)
我终于按照Rails的要求完成了这项工作。我能够禁用VCR(WebMock,实际上,这是我为VCR选择的后端),除非我正在运行rspec。作为背景,我最初在设置VCR时遵循了here的说明。
首先,我创建config/initializers/webmock.rb
:
# Disable WebMock globally so it doesn't interfere with calls outside of the specs.
WebMock.disable!
然后我在VCR.use_cassette()
附近添加了以下内容(在我的情况下,这是在spec_helper.rb
中:
config.around(:each, :vcr) do |example|
name = example.metadata[:full_description].split(/\s+/, 2).join("/").underscore.gsub(/[^\w\/]+/, "_")
options = example.metadata.slice(:record, :match_requests_on).except(:example_group)
+ # Only enable WebMock for the specs. Don't interfere with calls outside of this.
+ WebMock.enable!
VCR.use_cassette(name, options) { example.call }
+ WebMock.disable!
end
希望能有所帮助。