首页 > 解决方案 > 如何模拟 Late.JS 的时间

问题描述

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

谢谢

标签: javascriptnode.jslaterjs

解决方案


您使用什么库进行单元测试?我喜欢Jest,因为它非常直观。它有功能模拟记录在这里

jest.mock(path, moduleFactory) 采用模块工厂参数。模块工厂是返回模拟的函数。

和用法:

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

还要检查此处记录的jest.spyOn

最后但并非最不重要的一点是sinonJS及其存根,这是一个很好的工具,用于模拟函数和库,并使用您自己的函数实现来进行测试,例如返回硬编码的时间戳。在这里

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

好吧,通过不清楚的问题,我认为您对测试代码很感兴趣,现在我知道您想同时测试:laterJS 计划和您的代码。

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

我没有使用 laterJS 的经验,我有一些使用 node-cron 的经验,但想法完全一样。检查他们的一些测试套件以了解哪种方法是正确的。


推荐阅读