使用resque-scheduler在Rails中进行单元测试。手动将预定任务排入队列?

时间:2014-02-21 19:28:11

标签: ruby-on-rails unit-testing resque resque-scheduler

将来使用resque-scheduler创建Resque作业,如何进行单元测试?

将任务排入队列的代码:

i = 0
installed_apps.each_slice(3) do |slice|
  slice.each do |installed_app_id|
    Resque.enqueue_in((5*i).minutes, ReinstallApp, installed_app_id)
  end
  i = i+1
end

用于在单元测试中手动运行常规Rescue任务的代码:

def run_worker_simulation
  worker = Resque::Worker.new('connection')
  job = worker.reserve
  worker.perform(job)
end

当作为常规Resque作业排队时,任务运行正常。问题是,这不会运行任何resque-scheduler计划任务,即使是使用Resque.enqueue_in(0.minutes,...)的任务。你如何手动运行计划任务?

1 个答案:

答案 0 :(得分:1)

不是修改代码,而是测试环境有例外,在构建测试环境时围绕功能构建测试更好。

我建议只需构建一个测试来检查以确保Resque收到enqueue_in电话。假设resque-scheduler具有足够的测试覆盖率通常是安全的,但是,如果这使您对代码的整体健全性更加满意,则可以运行该gem的测试。