2014-12-04 27 views
1

我想要使用rspec的與mongoid,設計,database_cleaner和我有這個錯誤RSpec的與mongoid,設計,database_cleaner:ActiveRecord的:: ConnectionNotEstablished錯誤

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

什麼是你的config/application.rb文件? – 2014-12-05 20:07:06

+0

您是否找到解決此問題的解決方案? – 2015-03-18 15:21:45

回答

6

我有同樣的錯誤。

我安裝了寶石,版本:

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來手動禁用fixtures(因爲MongoID不支持這個功能)。現在Rspec像魅力一樣與MongoID合作!

剛創建的文件規格/支持/ 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 
+0

這個解決方案對我來說非常出色。出現問題時,我從Rails 4.0升級到了Rails 4.1。謝謝。 – dandrews 2017-01-10 02:46:08