作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经围绕 moment.js
构建了一个日历,现在正在进行单元测试。
我解决的第一个问题是测试运行时日期将如何变化,因此我能够使用this guidance锁定时刻。 。
目前,我遇到了一个错误:
"TypeError: Cannot read property 'weekdaysShort' of undefined"
我的代码有一行: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
函数。虽然我有信心这会让我克服这个问题,但感觉之后我很快就会遇到另一个障碍。
预先感谢您的帮助。
最佳答案
刚刚发现我常用的模式在 2016 github thread 中提供。而且,老实说,这可能就是我找到它的地方,尽管我不记得了:)
jest.mock('moment', () =>
const original = jest.requireActual('moment');
return {
__esModule: true,
default: {
...original,
...just the parts you want to mock
}
}
);
关于javascript - 如何用 Jest 来模拟模块的某些部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59272534/
我是一名优秀的程序员,十分优秀!