我正在尝试模拟“时刻”库,以便我可以运行快照测试,而不必担心通过moment()
自动生成的“当前”时间戳来使快照失真。
但是,在不丢失库的常规功能的情况下,我似乎无法创建moment()
的模拟版本。
这是我尝试过的:
src/tests/__mocks__/moment.ts
-----------------------------
const moment = require.requireActual("moment");
export default (timestamp: any = 0) => {
return moment(timestamp);
};
此模拟背后的逻辑是,它应该对没有任何类型时间戳的moment()
进行简单的覆盖调用,而不是让它生成当前时刻,而是将生成moment(0)
时刻。所有其他功能都应保留,例如:moment("2010-05-10")
应该为May 10th 2010
生成一个有效时刻,而其他类似moment().startOf("month")
的链接函数也应该仍然起作用。
但是,只要开玩笑在我的代码中遇到任何类型的moment()
声明,它都会在终端测试输出中产生以下错误:
TypeError: moment is not a function
如何解决这个问题?