为 Rails 设置 VCR

Setting up VCR for Rails

我目前正在尝试为我的应用程序将 VCR 正确设置为 运行。现在一切似乎都配置正确,但我一定遗漏了一些东西,因为当使用 VCR.use_cassette 的测试没有在我设置的 yml 文件中呈现响应时。我将 post 我所有与该问题相关的代码,如果我做错了什么,请告诉我。

/support/vcr.rb:

    VCR.configure do |c|
  c.configure_rspec_metadata!
  c.cassette_library_dir = Rails.root.join("spec", "vcr")
  c.hook_into :webmock
  c.after_http_request do |request, _response|
    VCR.http_requests_made << request
  end
end

请求规范:

 require "rails_helper"

describe "Mailchimp" do
  describe "Manage list" do
    let!(:subscriber) { FactoryGirl.create(:subscriber) }

    it "adds new subscriber to list" do
      expect do
        VCR.use_cassettes("mailchimp/list") do
          post new_subscriber_path
        end.to change(:subscriber, :count).by(1)
      end
    end
  end
end

YML 文件:/vcr/mailchimp/list.yml

NOTHING RENDERS. THIS IS WHERE I EXPECT THE RESPONSE FOR VCR BUT I"M GETTING NOTHING.

希望这些信息足够了。如果您需要更多,请告诉我?

我无法确定您的情况可能是什么错误,但这是我的想法:

require "rails_helper"

describe "Mailchimp" do
  describe "Manage list" do
    let!(:subscriber) { FactoryGirl.create(:subscriber) }

    it "adds new subscriber to list" do
      expect do
        VCR.use_cassette("mailchimp/list") do
          post new_subscriber_path
        end
      end.to change(:subscriber, :count).by(1)
    end
  end
end

进行了更改,

  1. 将 VCR 调用移至期望块
  2. 改为VCR.use_cassete

如果有效请告诉我。

尝试添加

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