ruby - rails - Ejecución de tareas de Rake en pruebas de Rspec
rspec español (3)
La respuesta aprobada no funcionó para mí, cuando necesitaba ejecutar mi propia tarea de rake
Aquí está mi solución
Poner en la parte superior del archivo de especificaciones
require ''rake''
Coloque estas líneas donde necesita ejecutar su tarea de rake personalizada, por ejemplo, rake update_data del archivo example.rake
load File.expand_path("../../../lib/tasks/example.rake", __FILE__)
# make sure you set correct relative path
Rake::Task.define_task(:environment)
Rake::Task["update_data"].invoke
Mi entorno:
rails (4.0.0)
ruby (2.0.0p195)
rspec-core (2.14.7)
rspec-expectations (2.14.3)
rspec-mocks (2.14.4)
rspec (2.14.1)
rspec-rails (2.14.0)
Estoy construyendo un conjunto de pruebas de integración y hay un poco de lógica para la que necesito tener una base de datos limpia. ¿Cómo puedo ejecutar la tarea db:test:purge
dentro de una de mis pruebas?
Estoy usando: ruby 1.9.2, rieles 3.0.9, rspec 2.6
Puede invocar tareas de Rake de la siguiente manera:
require ''rake''
Rake::Task[name].invoke
En este caso, esto daría como resultado el siguiente código:
require ''rake''
Rake::Task[''db:test:purge''].invoke
Si requerimos usar múltiples tareas de rake, podemos agregar
require "rake"
Rails.application.load_tasks
Entonces simplemente llame a cualquier tarea.
Rake::Task[''sync:process_companies''].invoke
Aunque no puedo confirmar si es más lento porque carga todas las tareas