Railsアプリでrspecを介して呼び出された場合にのみVCRをアクティブにする方法はありますか? 私のテストではうまく機能しますが、それらのテストの外でリクエストを傍受したくありません。
クライアントを使用してアプリに接続し、アプリが外部 Web サービスを呼び出している場合、Real HTTP connections are disabledと表示されます。
ありがとう、マーク
Railsアプリでrspecを介して呼び出された場合にのみVCRをアクティブにする方法はありますか? 私のテストではうまく機能しますが、それらのテストの外でリクエストを傍受したくありません。
クライアントを使用してアプリに接続し、アプリが外部 Web サービスを呼び出している場合、Real HTTP connections are disabledと表示されます。
ありがとう、マーク
VCR gem
あなたが適切なグループに設定されていることを確認してください
# Gemfile
group :test do
......
gem 'vcr'
end
詳細については、http://natashatherobot.com/vcr-gem-rails-rspec/をご覧ください。
最終的に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
それが誰かを助けることを願っています。