【问题标题】:VCR fails with DB (cassettes table doesn't exist) error when running tests运行测试时 VCR 失败并出现 DB(磁带表不存在)错误
【发布时间】:2013-05-06 22:41:00
【问题描述】:

在 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 盒式磁带尚不存在时,此操作通过

【问题讨论】:

    标签: ruby-on-rails ruby vcr


    【解决方案1】:

    我认为正在发生的事情是试图重建或还原您的 test/fixtures 目录中的所有内容;它还试图还原 vcr_cassettes 中的所有内容,但不存在。

    将我的vcr_cassettes 移动到test/fixtures 之外的目录为我解决了这个问题。

    1) 删除test/fixtures/vcr_cassettes目录

    2) 并将您的 test_helper.rb 更改为:

    c.cassette_library_dir = 'test/vcr_cassettes'
    

    【讨论】:

      猜你喜欢
      • 2015-08-11
      • 2019-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2015-09-19
      • 1970-01-01
      相关资源
      最近更新 更多