VCR:“目前没有正在使用的录像带。”创建第二个录像带时

时间:2019-01-31 00:58:22

标签: ruby-on-rails ruby rspec rspec-rails vcr

我正在尝试在外部API上进行RSpec功能测试。

我的VCR配置如下:

VCR.configure do |config|
  config.cassette_library_dir = 'spec/vcr'
  config.hook_into :webmock
  config.ignore_localhost = true
end

我的测试如下:

feature 'Visitor' do

  scenario 'performs an archival', :clean => false, :js => true do 
    mock_login
    visit '/dashboard'
    click_link 'Test Company'
    VCR.use_cassette('feature/archive') do
      within '.nav-app' do 
        click_button 'Quicksave' 
      end
    end
  end

  scenario 'performs a restore', :js => true do
    mock_login
    visit '/dashboard'
    click_link 'Test Company'
    VCR.use_cassette('feature/restore') do
      within '.nav-app' do 
        click_button 'Quickload' 
      end
    end
  end

end

archive盒式磁带创建得很好,但是restore盒式磁带抛出错误:

An HTTP request has been made that VCR does not know how to handle:

GET http://SomeApiUrl/...

There is currently no cassette in use.

我显然已经告诉VCR创建和使用另一个卡带,

VCR.use_cassette('feature/restore')

那有什么呢?

值得一提的是,即使清理卡带文件夹并重新开始,我仍然会收到此错误。

2 个答案:

答案 0 :(得分:0)

尝试将, :record => :new_episodes作为参数传递给use_cassete。如果您不使用,请录制新剧集。它认为它们是相同的请求。

答案 1 :(得分:0)

结果我很傻。问题似乎是我使用文件名vcr.rb来配置VCR。我认为它放在我的spec/support文件夹中没关系,但事实并非如此。

简单地重命名为vcr_config.rb可以立即解决问题...