代码之家  ›  专栏  ›  技术社区  ›  Roger

如何从测试程序中调用rake任务

  •  1
  • Roger  · 技术社区  · 16 年前

    我不想测试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
    

    当我运行这个测试时,我会得到以下错误。

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

    但是,如果我单独运行rake任务,它就会正常工作。

      rake email:run
    
    1 回复  |  直到 16 年前
        1
  •  3
  •   tfwright    16 年前

    测试环境不在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
    
    推荐文章