Mar*_*arc 5 javascript unit-testing momentjs reactjs jestjs
我已经建立了一个日历moment.js,我现在正在进行单元测试。
我解决的第一个问题是测试运行时日期将如何变化,因此我已经能够使用此指南锁定时刻。
目前,我陷入了一个错误:
“类型错误:无法读取未定义的属性‘weekdaysShort’”
我的代码有一行: const dateHeaders = moment.weekdaysShort();
通过实现 mocked 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);
Run Code Online (Sandbox Code Playgroud)
__mocks__文件夹中组装手动模拟。我没有走得太远,因为我开始觉得我必须将整个 Moment.js 库复制/粘贴到模拟中。虽然弄清楚他们如何做他们所做的事情会很酷,但这是另一天的项目。jest.spyOn - 不起作用,因为我没有监视模块。在这一点上,我正在考虑放弃Moment通过 props 传入的数组的函数。虽然我相信这会让我克服这个问题,但感觉之后我会很快遇到另一个障碍。
在此先感谢您的帮助。
刚刚发现我常用的模式是在2016 年的 github 线程中提供的,老实说,这可能是我找到它的地方,尽管我没有特别记得它:)
jest.mock('moment', () =>
const original = jest.requireActual('moment');
return {
__esModule: true,
default: {
...original,
...just the parts you want to mock
}
}
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
552 次 |
| 最近记录: |