运行测试时,VCR因DB(磁带表不存在)错误而失败

时间:2013-05-06 22:41:00

标签: ruby-on-rails ruby vcr

在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录像带不存在时,会通过

1 个答案:

答案 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'