test_helper test rails how ruby-on-rails ruby rspec

ruby-on-rails - how - test ruby on rails



Prueba de tarea Rake con Rspec con entorno Rails (4)

¿Su tarea está agregando el: ambiente para hacerlo antes? En tu archivo .rake deberías tener algo como esto:

namespace :survey do # ... task :send_report => :enviroment do # ... stuff end

Esto se debe a que necesita cargar todo el entorno para realizar esa tarea. Puede consultar este railcast para obtener más información http://railscasts.com/episodes/66-custom-rake-tasks

Estoy tratando de probar una tarea de rake y usa un registro activo en ella.

require ''spec_helper'' require ''rake'' load File.join(Rails.root, ''lib'', ''tasks'', ''survey.rake'') describe "survey rake tasks" do describe "survey:send_report" do it "should send a report" do Rake::Task[''survey:send_report''].invoke end end end

Cuando ejecuto esta especificación rspec spec/lib/survey_spec.rb , rspec spec/lib/survey_spec.rb este error "

RuntimeError: Don''t know how to build task ''environment''

¿Cómo se carga la tarea: entorno dentro de la especificación de ejemplo?


Creo que primero debes cargar las tareas:

require ''rake'' MyRailsApp::Application.load_tasks

y luego invoca tu tarea:

Rake::Task[''survey:send_report''].invoke


Parece que su tarea de toma puede necesitar el entorno de Rails para cargarse. Puede eliminar esto agregando esta línea a su gancho anterior (: todos):

Rake::Task.define_task(:environment)


Sospecho que el problema es que su survey:send_report tarea de survey:send_report depende del :environment pero no ha cargado el archivo que define la tarea del :environment . Eso estará en los rieles en alguna parte, y tu Rakefile principal Rakefile carga.

Entonces, creo que si cambias.

load File.join(Rails.root, ''lib'', ''tasks'', ''survey.rake'')

a

load File.join(Rails.root, ''Rakefile'')

funcionará