Tengo el siguiente archivo spec_helper.rb en mi aplicación Rails 3.1. Estoy usando Spork para cargar el entorno más rápido para las pruebas. Todas mis pruebas funcionaron antes de agregar Spork a la mezcla. Después de agregar spork, la base de datos de prueba no se borraba correctamente entre las ejecuciones de prueba, lo que descartó algunas de mis expectativas.Spork, RSpec y database_cleaner destruyendo la base de datos de desarrollo
Siguiendo otras instrucciones, agregué database_cleaner a la mezcla con el siguiente código; sin embargo, ahora, la base de datos de desarrollo se está limpiando, así como también la base de datos de prueba. La llamada ENV ["RAILS_ENV"] devuelve la prueba durante esta llamada.
¿Hay alguna manera de limitar explícitamente la llamada a DatabaseCleaner.clean_with (: truncamiento) para que solo afecte a la base de datos de prueba?
require 'rubygems'
require 'spork'
Spork.prefork do
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'shoulda/matchers/integrations/rspec'
require 'database_cleaner'
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
RSpec.configure do |config|
config.mock_with :mocha
config.formatter = 'documentation'
config.use_transactional_fixtures = true
config.before(:suite) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
end
end
Spork.each_run do
FactoryGirl.reload
end
Actualización: Aquí está mi archivo database.yml
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000
production:
adapter: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000
Además, he trabajado en todo el problema básico moviendo la llamada clean_with en el antes (: cada uno) sección, pero esto ralentiza la prueba funciona de manera significativa.
¿cuál es su 'database.yml'? – Bohdan
Actualicé la pregunta para incluir la información –
También enfrento el mismo problema, actualmente uso 'RAILS_ENV = paquete de prueba exec rake spec' para evitar que esto suceda. – subosito