特定の仕様の場合は VCR をオフにしてください

概要

スペック ファイルを完全に無視するように VCR に指示するにはどうすればよいですか?

実際の HTTP リクエストを許可するか、VCR を明示的にオフにすることを提案する Google グループの投稿を読みました。

私の意見では、仕様に :vcr メタデータ タグがない限り、VCR が介入しない方がはるかに使いやすいと思います。事前にビデオデッキがオンになっていたかどうかわからないため、前後にビデオデッキの電源をオフにして再度オンにすることはしたくありません。すべての仕様にわたって実際の HTTP リクエストを許可するのではなく、一部の特定のリクエストだけを許可したいと考えています。

VCR の選択性を高める方法はありますか?

解決策

これは最も洗練された解決策ではありませんが、インスタンス変数を使用して構成を元の設定に戻すことができます。

describe "A group of specs where you want to allow http requests" do
  before do
    VCR.configure do |c|
      @previous_allow_http_connections = c.allow_http_connections_when_no_cassette?
      c.allow_http_connections_when_no_cassette = true
    end
  end

  after do
    VCR.configure do |c|
      c.allow_http_connections_when_no_cassette = @previous_allow_http_connections
    end
  end

  # Specs in this block will now allow http requests to be made

end

最初に API を立ち上げて実行する作業をしており、作成しているリクエストをデバッグできるようにしたいと考えている間、これが役立つことがわかりました。 API が正しく動作したら、前後のブロックを削除して、通常どおり VCR を使用できます。