在Ruby 1.9上使用VCR和我的Rails 3.1应用程序时,使用现有卡带运行rake test
会产生:
错误:test_ #create_returns_created_account_upon_successful_creation(AccountServiceTest) ActiveRecord :: StatementInvalid:Mysql2 :: Error:表'test_db.vcr_cassettes_account_service_create'不存在:DELETE FROM
vcr_cassettes_account_service_create
我的 test_helper.rb 中的我的VCR配置:
VCR.configure do |c|
c.allow_http_connections_when_no_cassette = true
c.cassette_library_dir = 'test/fixtures/vcr_cassettes'
c.hook_into :fakeweb
end
适用的测试::单位代码:
require 'test_helper'
class AccountServiceTest < ActiveSupport::TestCase
test '#create returns created account upon successful creation' do
VCR.use_cassette('account_service_create') do
created_account = AccountService.new.create({name: 'honeybadger'})
assert_equal 'honeybadger', created_account.name
end
end
end
仅供参考,我也在使用DatabaseCleaner;不确定那里是否存在冲突。有人见过这个吗?
注意:当VCR录像带不存在时,会通过
答案 0 :(得分:2)
我认为正在发生的事情是尝试重建或恢复test/fixtures
目录中的所有内容;它试图恢复vcr_cassettes
中的所有内容,这是不存在的。
将我的vcr_cassettes
移到test/fixtures
以外的目录中为我解决了这个问题。
1)删除test/fixtures/vcr_cassettes
目录
2)并将test_helper.rb
更改为:
c.cassette_library_dir = 'test/vcr_cassettes'