0

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

4

1 回答 1

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'
于 2013-07-31T16:17:36.380 回答