如何测试已安排的作业(每个一分钟,cron“* * * * *”),但不等待 "real" 一分钟(rufus-scheduler vs 虚拟时间)?

How to test jobs which were scheduled (each one min, cron "* * * * *"), but not wait "real" one minute (rufus-scheduler vs virtual time)?

rufus-scheduler lib允许我们安排任务 https://github.com/jmettraux/rufus-scheduler

require 'rufus-scheduler'

scheduler = Rufus::Scheduler.new

scheduler.cron '* * * * *' do
  # do something every minute
end

事实上,当您想在 rufus-scheduler 上测试您的应用程序时,您需要休眠 real 1 min,这对于典型测试来说太多了。

例如,在 Reactor(Java) 中,他们提供 StepVerifier.withVirtualTime 以避免长时间 运行 测试。`:

rufus-schedulerRuby 本身的测试中是否有任何时间操作选项?

当前解

rufus-scheduler 具有类型 in,因此为了验证应用程序框架,我使用 in=0.001ssleep 0.4.

是的,测试需要半秒,但这比 1 分钟要好得多。

看看

或其他 "time travel" 工具。

我在 "only test your own code" 上支持@spickermann。