2010-01-10 3 views
1

Я не пытаюсь проверять задачи рейка. У меня есть тестовая программа, которая рассылает электронные письма (реальные электронные письма да), чтобы проверить шаблоны писем и т.д.Как вызвать задачу рейка из тестовой программы

class EmailTemplatesTest < ActiveSupport::TestCase  
    context 'send_password_info' do 
    setup do 
     Emailtb.send_password_info(user) 
     Rake::Task['email:run'].invoke # this actually delivers email 
    end 
    should 'have one emailtb' do 
     assert_equal 1, Emailtb.count 
    end 
    end  
end 

Когда я запускаю этот тест, то я получаю следующее сообщение об ошибке.

RuntimeError: Don't know how to build task 'email:run' 

Однако если запустить задачу грабли отдельно, то он работает отлично

rake email:run 

ответ

3

Тестовая среда не загружает файлы в Lib. Вы должны вручную загрузить их в верхней части файла, например:

require 'rake' 
load File.join(RAILS_ROOT, 'lib', 'tasks', 'my_task.rake') 
class EmailTemplatesTest < ActiveSupport::TestCase  
    context 'send_password_info' do 
    setup do 
     Emailtb.send_password_info(user) 
     Rake::Task['email:run'].invoke # this actually delivers email 
    end 
    should 'have one emailtb' do 
     assert_equal 1, Emailtb.count 
    end 
    end  
end 
+1

Использование Rails.root в Rails 5 – juliangonzalez

Смежные вопросы