我正在尝试在外部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')
那有什么呢?
值得一提的是,即使清理卡带文件夹并重新开始,我仍然会收到此错误。
答案 0 :(得分:0)
尝试将, :record => :new_episodes
作为参数传递给use_cassete
。如果您不使用,请录制新剧集。它认为它们是相同的请求。
答案 1 :(得分:0)
结果我很傻。问题似乎是我使用文件名vcr.rb
来配置VCR。我认为它放在我的spec/support
文件夹中没关系,但事实并非如此。
简单地重命名为vcr_config.rb
可以立即解决问题...