2010-09-03 19 views
5

Tengo 30 especificaciones de mi foo_controller_spec.rb y cuando ejecuto el archivo completo utilizando especificaciones, consigo 4 fracasos y 2 en espera. Cuando ejecuto las 4 especificaciones que fallan individualmente, 3 de ellas todavía fallan, pero una de ellas pasa. Al principio, pensé que era un problema de base de datos, que los datos no se estaban limpiando correctamente entre las ejecuciones. Así que instalé database_cleaner (http://github.com/bmabey/database_cleaner) y se añade el código a mi spec_helper:especificación persona pasa cuando se ejecuta solo, pero falla cuando se ejecute todas las características

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

config.before(:each) do 
    DatabaseCleaner.start 
    Sham.reset 
    login 
end 

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

Ahora en que funciono mi especificaciones puedo ver que las tablas se truncan entre cada especificación, así que sé que está funcionando, pero la especificación sigue sin cuando se ejecuta con todas las demás especificaciones pero pasa cuando se ejecuta solo. ¿Que me estoy perdiendo aqui?

Respuesta

6

Tenía exactamente el mismo problema y estaba fuera de mi mente!

Seguí el problema de esta manera (con Textmate): seleccione sus archivos en el cajón del proyecto (varios archivos) y luego vaya a "Paquetes> Rspec> Ejecutar ejemplos en los archivos/directorios seleccionados".

El truco es encontrar el archivo que está causando la interferencia con otros.

Para mí estaba cambiando de I18n.locale en un archivo que causó el entorno local que ha cambiado para todos los demás ejemplos!

he perdido unas horas volviendo loco con esto ...

+0

Niza solución! Tuve el mismo problema y descubrí que un "incluir Foo" fuera de cualquier bloque de descripción estaba haciendo que esos métodos estuvieran disponibles para todas las especificaciones. Esto enmascaró una falla al ejecutar el conjunto como un todo. – r00k

+1

¿cómo podría probar esto con Sublime Text en mi Terminal? – Ricbermo

1

Sólo en caso de que ayuda a los demás: he tenido un problema similar y descubrir que tenía

  • Rspec.configures callejeros que fueron preponderantes con para todas las pruebas en la línea
  • WebMocks habilitadas en una de las pruebas que parecen en cascada a continuación en las pruebas hasta que he incluido en el spec_helper para que las conexiones eran de forma predeterminada

    R Spec.configure do | config | config.before (suite) hacer WebMock.allow_net_connect!

+0

También estaba enfrentando el mismo problema @Ben, me alegra que hayas publicado. –

0

Tuve un problema similar hoy que tomó bastante tiempo para resolver.

esto falla:

module SomeModule 
    describe SomeController do 
    it 'does something' 
    end 
end 

Esto pasa:

describe SomeModule::SomeController do 
    it 'does something' 
end 

El problema tiene que ver con la definición del alcance.

Cuestiones relacionadas