unitarias rails pruebas hacer español como ruby ruby-on-rails-3 rspec tdd rake

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