8

仕様ファイルを完全に無視するよう VCR に伝えるにはどうすればよいですか?

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

:vcr私の意見では、仕様にメタデータ タグがない限り、VCR が鼻を突っ込まない方がはるかに使いやすいでしょう。以前にオンになっていたかどうかわからないため、 before/でVCR をオフにしてから再度オンにしたくありません。afterすべての仕様で実際の HTTP リクエストを許可したくはありません。特定の仕様のみです。

VCR をより選択的にする方法はありますか?

4

5 に答える 5

10

これは最も洗練されたソリューションではありませんが、インスタンス変数を使用して構成を元の設定に戻すことができます

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 を使用できます。

于 2016-05-02T18:56:29.380 に答える
8

もちろん、構成ブロックに次を追加します。

VCR.configure do |c|
  c.allow_http_connections_when_no_cassette = true
end

これは、VCRがテストスイートに関して持っている唯一のオプションです。ドキュメントを参照してください。

ほとんどの場合、このような動作の記録モードを実際に検討する必要があるため、実用的です。

于 2015-06-08T11:38:16.730 に答える
2

これを行う方法はいくつかあります。以下にいくつかのリソースを示します。

これらの行に沿った何かがうまくいくかもしれません:

# In the beginning of your describe block
around do |example|
  VCR.turned_off { example.run }
end

また

let(:request) { 
  VCR.turned_off do
    get some_path(params)
  end
end

it { expect { request } .to .... }

VCR.eject_cassette仕様で行っていることによっては、オフにする方法を使用する前に使用する必要がある場合があります。

于 2020-11-25T05:57:48.203 に答える