首页 > 解决方案 > 我可以使用 Moment.js 分配什么“现在”吗?

问题描述

我正在使用 moment.js 并且我想编写一个测试,上面写着“如果你没有传递日期,它会返回now()”。问题是,每次测试运行时,now()都会得到不同的结果。在其他库中,您可以设置now()将返回的内容以用于测试目的。moment.js 是否提供了一种方法来做到这一点?我一直在谷歌搜索,没有找到任何结果表明你是否可以这样做。

标签: javascriptunit-testingmomentjs

解决方案


Timekeeper ( https://www.npmjs.com/package/timekeeper ) 正好满足了这一需求。

它覆盖了日期构造函数(即在幕后使用的时刻),因此它也适用于时刻。

您可以执行以下操作:

const timekeeper = require('timekeeper');

const freezeDate = new Date();
timekeeper.freeze(freezeDate);

// in your test
expect(result).to.equal(freezeDate);

推荐阅读