如何模拟 Later.JS 的时间

How to mock the time for Later.JS

我在每个月的第一天使用 Later.JS 进行自动函数调用。为了进行测试,我需要模拟时间来检查 Later.JS 和我的代码是否做了正确的事情。有人可以帮助我如何模拟过去的时间吗?

谢谢

您使用什么库进行单元测试?我喜欢 Jest 因为它非常直观。 它具有 mock 记录的功能 here

jest.mock(path, moduleFactory) takes a module factory argument. A module factory is a function that returns the mock.

和用法:

jest.mock('laterJS', () => () => ({format: () => '2018–01–30T12:34:56+00:00'}));

同时检查 jest.spyOn 记录 here

最后但同样重要的是,sinonJS 及其 stubs,这是模拟函数和库以及使用您自己的实现的好工具用于测试目的的功能,如返回硬编码时间戳。 Here it is.

编辑:编辑问题后我明白了 OP 想要实现的目标

好的,由于问题不明确,我认为你对测试代码很感兴趣,现在我知道你想同时测试:laterJS 计划和你的代码。

基本上,所有 crones/scheduler 都是每隔一段时间为 运行ning 代码/任务创建的。在引擎盖下,以非常简单的方式,调度程序一直在检查是否满足任何调度条件。如果是 - 做点什么。为了实现它,你必须模拟 clock 让 laterJS 认为是时候 运行 他的工作了。

我没有laterJS的经验,我有一些node-cron的,但是思路是完全一样的。 Check some of their test suites 了解哪种方法是正确的。