我试图使用rspec与mongoid,devise,database_cleaner,我有这个错误
Failure/Error: Unable to find matching line from backtrace
ActiveRecord::ConnectionNotEstablished:
ActiveRecord::ConnectionNotEstablished
# /home/adham/.rvm/gems/ruby-2.1.5/gems/activerecord-4.1.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:541:in `retrieve_connection'
# /home/adham/.rvm/gems/ruby-2.1.5/gems/activerecord-4.1.8/lib/active_record/connection_handling.rb:113:in `retrieve_connection'
# /home/adham/.rvm/gems/ruby-2.1.5/gems/activerecord-4.1.8/lib/active_record/connection_handling.rb:87:in `connection'
# /home/adham/.rvm/gems/ruby-2.1.5/gems/activerecord-4.1.8/lib/active_record/fixtures.rb:499:in `create_fixtures'
# /home/adham/.rvm/gems/ruby-2.1.5/gems/activerecord-4.1.8/lib/active_record/fixtures.rb:984:in `load_fixtures'
# /home/adham/.rvm/gems/ruby-2.1.5/gems/activerecord-4.1.8/lib/active_record/fixtures.rb:957:in `setup_fixtures'
# /home/adham/.rvm/gems/ruby-2.1.5/gems/activerecord-4.1.8/lib/active_record/fixtures.rb:806:in `before_setup'
我的 gemfile 测试组
group :development, :test do
gem "factory_girl_rails", "~> 4.0"
gem 'rspec-rails', '~> 3.1.0'
gem 'spork', '~> 0.8.5'
gem 'mongoid-rspec', '~> 2.0.0.rc1'
gem 'capybara'
gem 'database_cleaner'
gem 'shoulda-matchers'
end
和我的rails_helper.rb ==
ENV["RAILS_ENV"] ||= 'test'
require 'spec_helper'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require "mongoid"
Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
RSpec.configure do |config|
config.fixture_path = "#{::Rails.root}/spec/fixtures"
config.use_transactional_fixtures = false
config.include Mongoid::Matchers
config.include FactoryGirl::Syntax::Methods
config.infer_spec_type_from_file_location!
end
我该怎么办?
答案 0 :(得分:11)
我遇到了同样的错误。
我安装的宝石版本:
rails (4.2.0)
rspec (3.2.0)
rspec-core (3.2.2)
rspec-expectations (3.2.0)
rspec-mocks (3.2.1)
rspec-rails (3.2.1)
rspec-support (3.2.2)
mongoid-rspec (2.2.0)
我试图从所有模式中禁用灯具,包括
的所有差异RSpec.configure do |config|
config.use_transactional_fixtures = false
end
并没有解决这个错误。
经过一番研究后,我尝试修补rails ActiveRecord以手动禁用灯具(因为MongoID不支持此功能)。现在Rspec和MongoID一起使用就像魅力一样!
使用此内容创建文件 spec / support / disable_active_record_fixtures.rb :
module ActiveRecord::TestFixtures
def before_setup
super
end
def after_teardown
super
end
end
不要忘记在rails_helper.rb中要求此文件
如果您使用的是DatabaseCleaner,则需要使用以下内容创建另一个支持文件:
RSpec.configure do |config|
config.before(:suite) do
DatabaseCleaner[:mongoid].strategy = :truncation
end
config.before(:each) do
DatabaseCleaner[:mongoid].start
end
config.after(:each) do
DatabaseCleaner[:mongoid].clean
end
end