1

以后用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, ...) 的任务。您如何手动运行计划任务?

4

1 回答 1

1

与其修改代码确实对测试环境有例外,不如在构建功能时围绕功能构建测试是更好的做法。

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

于 2014-02-24T02:29:56.777 回答