2011-06-10 5 views
5

Estoy intentando configurar Spork y Capybara con TestUnit, y estoy ejecutando en un problema de configuración de test.rb.Spork Capybara, config.cache_classes conflicto

La cuestión es que requiere que Spork config.cache_classes se establece en false, por lo que los cambios en el modelo pueden reflejarse cuando se ejecutan pruebas sin tener que reiniciar todo el tiempo Spork .

Capybara, por otro lado, parece requerir que config.cache_classes se establezca en verdadero; de lo contrario, las pruebas de integración simplemente no parecen funcionar.

Estoy buscando cualquier posible solución/explicación para esto. ¿Es algo que solo existe dentro de TestUnit, o es esto quizás un error y debería informarlo como tal? ¡Cualquier ayuda sería enormemente apreciada!

Respuesta

3

Yo recomendaría tomar un enfoque similar al this uno. Lo más importante que usted querrá hacer es configurar sus config.cache_classes de verdad, pero la fuerza Spork para recargar sus modelos y dependencias en cada carrera:

Spork.each_run do 
    ActiveSupport::Dependencies.clear 
    ActiveRecord::Base.instantiate_observers 
end if Spork.using_spork? 

Esperamos que esto permitirá que el cache_classes ser cierto para capibara, pero también permitirá que tus modelos y observadores sean recargados entre pruebas.

+0

He estado buscando una solución a este problema, y ​​todo lo que veo son comentarios que dicen "prueba esto" y "haz algo como" y "con suerte". Desafortunadamente, esta respuesta no está más cerca de resolver el problema que los demás. –

1

Me encontré con un problema similar con spork y pepino. La solución que encontré fue:

config.cache_classes = (ENV['DRB'] == 'true' ? false : true) 

spork establece el entorno DRB. No creo que esta sea la manera más elegante de resolver esto, pero si el carpincho establece alguna variable env, ¿podrías usar eso?

+0

Esto es lo que terminé haciendo. cache_classes = false me causa grandes dolores en otros lugares cuando ejecuto el conjunto de pruebas completo, pero si estoy ejecutando spork, generalmente estoy centrado en tareas y agregando errores, etc. Incluso con las adiciones each_run anteriores, si cache_classes se configuró en true , spork simplemente no volvería a cargar para mí. –