2

Railsアプリでrspecを介して呼び出された場合にのみVCRをアクティブにする方法はありますか? 私のテストではうまく機能しますが、それらのテストの外でリクエストを傍受したくありません。

クライアントを使用してアプリに接続し、アプリが外部 Web サービスを呼び出している場合、Real HTTP connections are disabledと表示されます。

ありがとう、マーク

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で思い通りの作業ができました。rspecを実行しているときを除いて、VCR(実際には、VCR用に選択したバックエンドであるWebMock)を無効にすることができました。背景として、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 に答える