2015-05-11 9 views
9

Die Daten konnten nicht mit database_cleaner.rb gelöscht werden; Werfen Sie das folgende Problem auf laufende Tests.`autodetect ': Kein bekanntes ORM wurde erkannt

/Users/prashanth_sams/.rvm/gems/ruby-2.0.0-p598/gems/database_cleaner-1.3.0/lib/database_cleaner/base.rb:147:in `automatisch erkennen ': Keine bekannt ORM wurde erkannt! Ist ActiveRecord, DataMapper, Sequel, MongoMapper, Mongoid, Moped oder CouchPotato, Redis oder Ohm geladen? (DatabaseCleaner :: NoORMDetected)

enter image description here

spec_helper.rb

ENV["RAILS_ENV"] ||= 'test' 

require File.expand_path("../config/environment", __FILE__) 
require 'rspec/rails' 

Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f} 

RSpec.configure do |config| 

    config.mock_with :rspec 

    config.use_transactional_fixtures = false 


    config.expect_with :rspec do |expectations| 
    expectations.include_chain_clauses_in_custom_matcher_descriptions = true 
    end 

    config.expect_with :rspec do |c| 
    c.syntax = [:should, :expect] 
    end 

    config.mock_with :rspec do |mocks| 
    mocks.verify_partial_doubles = true 
    end 

    config.color = true 

    Selenium::Application.reload_routes! 

end 

database_cleaner.rb

require 'database_cleaner' 

DatabaseCleaner.strategy = :truncation 

RSpec.configure do |config| 
    config.use_transactional_fixtures = false 
    config.before :each do 
    DatabaseCleaner.start 
    end 
    config.after :each do 
    DatabaseCleaner.clean 
    end 
end 
+0

Check diesen Blog, um Datenbank-Reiniger zu konfigurieren http://devblog.avdi.org/2012/08/31/configuring-database_cleaner-with-rails-rspec-capybara-and-selenium/ –

+0

Haben Sie ein Modell definiert? – gnerkus

Antwort

0

mein Setup verwenden, scheint gut zu funktionieren RDBMS (che cked auf MySQL und Postgres), legen Sie sie in Ihre database_cleaner.rb:

RSpec.configure do |config| 
    config.use_transactional_fixtures = false 

    config.before(:suite) do 
    DatabaseCleaner.clean_with(:truncation) 
    end 

    config.before(:each) do 
    DatabaseCleaner.strategy = :transaction 
    end 

    # this may be needed for Capybara tests and for testing after_commit hooks 
    config.before(:each, strategy: :truncation) do 
    DatabaseCleaner.strategy = :truncation 
    end 

    config.before(:each) do 
    DatabaseCleaner.start 
    end 

    config.after(:each) do 
    DatabaseCleaner.clean 
    end 
end 

Wenn Sie truncation Strategie verwenden möchten, verwenden Sie einfach describe 'something', strategy: :truncation oder it 'something', strategy: truncation.

4

Ich hatte das gleiche Problem auf controller_spec. 'autodetect': No known ORM was detected! Is ActiveRecord, DataMapper, Sequel, MongoMapper, Mongoid, Moped, or CouchPotato, Redis or Ohm loaded? (DatabaseCleaner::NoORMDetected)

Ich gelöst, indem Sie rails_helper Datei auf Controller-Spezifikation erforderlich.

require 'rails_helper' 

In rails_helper.rb erfordern Datei 'database_cleaner'.

require 'database_cleaner' 
0

Ich hatte dieses Problem (on Rails 5.1) und der Grund war, dass ich in meinem spec_helper.rb

config.before(:suite) do 
    DatabaseCleaner.clean_with :truncation 
end 

config.before(:each) do 
    DatabaseCleaner.strategy = :transaction 
end 

config.before(:each) do 
    DatabaseCleaner.start 
end 

config.after(:each) do 
    DatabaseCleaner.clean 
end 

hatte.

Ich setze auch require 'database_cleaner in spec_helper.rb.

Also schließlich habe ich beide Dinge auf rails_helper.rb verschoben und das Problem für mich behoben.

Verwandte Themen