【发布时间】:2019-12-10 17:25:09
【问题描述】:
我已经围绕moment.js 构建了一个日历,并且我现在正在进行单元测试。
我解决的第一个问题是测试运行时日期将如何变化,因此我能够使用this guidance 锁定这一时刻。
目前,我遇到了一个错误:
“TypeError: 无法读取未定义的属性‘weekdaysShort’”
我的代码有一行:const dateHeaders = moment.weekdaysShort();
通过实现模拟的moment().format(),我基本上失去了库的其余部分。
我的直接问题是如何设置 jest 让我返回您从 moment.weekdaysShort(); 获得的数组
我更大的问题是我是否走错了路,应该想出另一个策略。
我尝试过但结果不成功的事情
- 手动添加
weekdayShort函数:
const mockMoment = function() {
return {format: '2016–12–09T12:34:56+00:00'}
};
mockMoment['weekdaysShort'] = () => ['Sun', 'Mon', 'Tues']; // etc etc etc
jest.mock('moment', () => mockMoment);
- 在
__mocks__文件夹中组装手动模拟。我并没有在这条路上走得太远,因为它开始觉得我必须将整个 Moment.js 库复制/粘贴到模拟中。虽然弄清楚他们是如何做的会很酷,但这是另一天的项目。 -
jest.spyOn- 不起作用,因为我没有监视模块。
此时,我正在考虑为通过 props 传入的数组放弃 Moment 函数。虽然我相信这会让我克服这个问题,但感觉之后我很快就会遇到另一个障碍。
提前感谢您的帮助。
【问题讨论】:
-
查看How to mock moment.utc() for unit tests? 以查看模拟 momentjs 输出以进行测试的示例。
标签: javascript reactjs unit-testing jestjs momentjs