在新的Rails 3项目中未定义的方法`use_transactional_fixtures ='

Dou*_*g R 5 testing ruby-on-rails

我在使用MongoDB和Mongoid尝试在Rails3项目中运行测试时遇到错误:

undefined method `use_transactional_fixtures=' for ActiveSupport::TestCase:Class
Run Code Online (Sandbox Code Playgroud)

这是一个在3.0.7上运行的全新项目.我的test_helper.rb文件就是这样的:

ENV["RAILS_ENV"] = "test"
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'

class ActiveSupport::TestCase

  self.use_transactional_fixtures = true

end
Run Code Online (Sandbox Code Playgroud)

这是一个ActiveRecord唯一的方法吗?我在其他也使用ActiveSupport :: TestCase的rails项目中没有这个问题.此外,我使用Fabricator生成我的测试数据,但这并不能真正解释这个错误.

Dou*_*g R 3

所以事情是这样的: use_transactional_filters 是 /rails/test_helper.rb 中定义的方法

module ActiveRecord
  module TestFixtures
    extend ActiveSupport::Concern

    included do

      class_attribute :use_instantiated_fixtures   # true, false, or :no_instances
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

所以实际上它是 ActiveRecord 特定的。由于我没有在项目中使用 ActiveRecord,因此这没有任何效果,并且我必须找到另一种方法来在测试运行之间清除数据库。