2010-01-10 28 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任務然後正常工作

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 5中使用Rails.root – juliangonzalez 2017-02-20 16:08:10

相關問題