将来使用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,...)的任务。你如何手动运行计划任务?
答案 0 :(得分:1)
不是修改代码,而是测试环境有例外,在构建测试环境时围绕功能构建测试更好。
我建议只需构建一个测试来检查以确保Resque收到enqueue_in
电话。假设resque-scheduler
具有足够的测试覆盖率通常是安全的,但是,如果这使您对代码的整体健全性更加满意,则可以运行该gem的测试。