sch*_*gel 11 javascript unit-testing reactjs jestjs
我的 React 组件中有这个代码,它最终呈现一个 HTML:
new Date(createDate).toLocaleDateString()
Run Code Online (Sandbox Code Playgroud)
我的本地计算机和我们的构建计算机设置了不同的区域设置,因此该函数的结果不一致。因此,正如您所期望的,单元测试在我的机器上通过,但在构建机器上失败,反之亦然。
我想模拟“toLocalDateString”,以便它始终使用相同的区域设置,例如“en-US”,或者至少它始终返回相同的字符串。我们的测试框架是个笑话。我如何实现这个目标?
我在我的 test.spec.js 中尝试了这个,但它根本没有任何效果:
Date.prototype.toLocaleDateString = jest.fn().mockReturnValue('2020-04-15')
expect(component).toMatchSnapshot()
Run Code Online (Sandbox Code Playgroud)
我仍然在快照中得到相同的旧 toLocalDateString 实现,但不考虑我的模拟返回值。
我可能有点晚了但希望对某人有帮助
let mockDate;
beforeAll(() => {
mockDate = jest.spyOn(Date.prototype, 'toLocaleTimeString').mockReturnValue('2020-04-15');
});
afterAll(() => {
mockDate.mockRestore();
});
Run Code Online (Sandbox Code Playgroud)
你能包起来吗
new Date(createDate).toLocaleDateString()
Run Code Online (Sandbox Code Playgroud)
在函数中,将其作为 prop 传递给组件,然后模拟它?
归档时间: |
|
查看次数: |
9204 次 |
最近记录: |