2

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

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

谢谢,马克

4

2 回答 2

2

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

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

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

于 2014-11-28T19:47:34.527 回答
1

我终于用 Rails 完成了这项工作。我能够禁用 VCR(实际上是 WebMock,这是我为 VCR 选择的后端),除非我正在运行 rspec。作为背景,我最初在设置 VCR 时按照此处的说明进行操作。

首先,我创建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

希望对某人有所帮助。

于 2014-11-29T23:38:44.393 回答