将VCR限制为规格

时间:2014-11-28 19:29:12

标签: ruby-on-rails rspec vcr

有没有办法让VCR在Rails应用程序中通过rspec调用时才能激活?它适用于我的测试,但我不希望它在这些测试之外拦截请求。

如果我使用客户端连接到我的应用程序并且应用程序正在调用外部Web服务,则 禁用Real HTTP连接

谢谢, 马克

2 个答案:

答案 0 :(得分:2)

确保您的VCR gem设置在正确的组

# Gemfile
group :test do
  ......
  gem 'vcr'
end

请查看http://natashatherobot.com/vcr-gem-rails-rspec/以获取更多帮助。

答案 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

希望能有所帮助。