我有一个方法取决于new Date
创建一个日期对象,然后对其进行操作。我正在测试操作是否按预期工作,因此我需要将返回日期与预期日期进行比较。为了做到这一点,我需要确保new Date
在测试和正在测试的方法中返回相同的值。我怎样才能做到这一点?
有没有办法真正模拟构造函数的返回值?
我可以创建一个模块,该模块需要提供日期对象并且可以被模拟的函数。但这在我的代码中似乎是不必要的抽象。
要测试的示例函数...
module.exports = {
sameTimeTomorrow: function(){
var dt = new Date();
dt.setDate(dt + 1);
return dt;
}
};
我如何模拟的返回值new Date()
?
从 jest 26 开始,您可以使用“现代”fakeTimers 实现(请参阅此处的文章 https://jestjs.io/blog/2020/05/05/jest-26#new-fake-timers)支持该方法jest.setSystemTime
.
beforeAll(() => {
jest.useFakeTimers('modern');
jest.setSystemTime(new Date(2020, 3, 1));
});
afterAll(() => {
jest.useRealTimers();
});
注意'modern'
将是 jest 版本 27 的默认实现。
请参阅文档setSystemTime
here https://jestjs.io/docs/en/jest-object#jestsetsystemtimenow-number--date.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)