【发布时间】:2019-08-14 17:05:25
【问题描述】:
我在每个月的第一天使用 Later.JS 进行自动函数调用。对于测试,我需要模拟时间来检查 Later.JS 和我的代码是否正确。谁能帮助我如何模拟过去的这段时间。
谢谢
【问题讨论】:
标签: javascript node.js laterjs
我在每个月的第一天使用 Later.JS 进行自动函数调用。对于测试,我需要模拟时间来检查 Later.JS 和我的代码是否正确。谁能帮助我如何模拟过去的这段时间。
谢谢
【问题讨论】:
标签: javascript node.js laterjs
您使用什么库进行单元测试?我喜欢 Jest,因为它非常直观。 它有功能 mock 记录在here。
jest.mock(path, moduleFactory) 采用模块工厂参数。模块工厂是一个返回模拟的函数。
及用法:
jest.mock('laterJS', () => () => ({format: () => '2018–01–30T12:34:56+00:00'}));
还要检查 jest.spyOn 记录的 here。
最后但同样重要的是,还有 sinonJS 及其 stubs,这是一个很好的工具,用于模拟函数和库,并使用您自己的函数实现来进行测试,例如硬返回-编码的时间戳。 Here it is.
编辑:编辑问题后,我了解了 OP 想要实现的目标
好的,由于不清楚的问题,我认为您对测试代码很感兴趣,现在我知道您想要同时测试:laterJS 计划和您的代码。
基本上,所有 crones / 调度程序都是为每隔一段时间运行代码 / 任务而创建的。在后台,以非常简单的方式,调度程序一直在检查是否满足任何调度条件。如果是 - 做点什么。为了实现它,你有模拟 clock 让 laterJS 认为这是运行他的工作的时间。
我对latestJS没有经验,我有一些node-cron的经验,但想法完全一样。 Check some of their test suites 了解哪种方法是正确的。
【讨论】: