Pregunta

Tengo una serie de tareas en el rastrillo de un Rakefile la que me gustaría probar como parte de las especificaciones de mi etc. Cada tarea se define en la forma:

task :do_somthing => :environment do
  # Do something with the database here
end

Cuando el: tarea ambiente establece una conexión a la base de datos y las clases ActiveRecord / DataMapper. No estoy usando esto como parte de los carriles, pero tengo una serie de pruebas que me gusta para funcionar como parte de BDD.

Este fragmento ilustra la forma en que estoy tratando de probar las tareas del rastrillo.

def setup
  @rake = Rake::Application.new
  Rake.application = @rake
  load File.dirname(__FILE__) + '/../../tasks/do_something.rake'
end

should "import data" do
  @rake["do_something"].invoke
  assert something_in_the_database
end

Así que mi solicitud de ayuda - ¿Es posible pasar por encima de la: tarea ambiente en mi archivo test_helper.rb así que mis pruebas rastrillo interactúa con la base de datos de mi prueba, en lugar de la producción? He tratado de redefinir la tarea en el archivo de ayuda, pero esto no funciona.

Cualquier ayuda para una solución sería genial, ya que he estado atrapado en esto durante la última semana.

¿Fue útil?

Solución

Mi "solución" a un problema similar fue extraer toda la lógica de mis archivos .rake y crear clases para realizar las tareas, dejando sólo una llamada de una línea en el archivo de rastrillo, que me sentí seguro en pruebas no demasiado difícil. Las clases podrían entonces ser probados más o menos normalmente.

No sé lo bien que se ponía de pie a un complejo conjunto de tareas interdependientes que mantienen un estado de gran envergadura: probablemente no está bien, pero una vez más que lo más probable es ser una indicación de algún otro problema de diseño .. .

Tengo curiosidad por ver si me he perdido algo mejor.

EDIT: No solía ser un blog aquí que (a) dice lo mismo y (b) lo dice mejor. Parece que lo dijo primero, también.

Otros consejos

Creo que busca esta línea: require (File.join (RAILS_ROOT, 'config', 'medio ambiente')) que es exactamente lo que se encuentra en la "tarea: medio ambiente" aplicación

Lo utilizo para probar mis tareas rastrillo utilizando rspec

cuando se está ejecutando entorno de pruebas es que está siendo cargado es de prueba.

  

lo que está interactuando con la prueba   única base de datos.

Así que no veo ninguna razón para anular su tarea en el rastrillo de test_helper.rb

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top