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á