我正在使用moment.js,我想写一个测试说:“如果不输入日期,它将返回now()
”。问题在于,每次测试运行时,now()
都会是不同的结果。在其他库中,可以设置now()
返回的值以进行测试。 moment.js是否提供了一种方法?我一直在谷歌上搜索,没有找到任何表明您是否可以执行此操作的结果。
答案 0 :(得分:3)
计时员(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);
答案 1 :(得分:0)
您可以通过执行以下from the official momentjs
docs来更改每次测试之前的时间源(基本上用新的Date.now
覆盖时间实现)。返回自Unix纪元时间(1970年1月1日)起的毫秒数。
moment.now = function () {
return +new Date();
}