如何使用 Jest 模拟打字稿中的日期对象?



我正在尝试模拟将用于所有单元测试用例的日期对象。我有很多关于javascript的参考,但由于类型错误,这在打字稿中不起作用。任何人都可以提供解决此问题的解决方案吗?

// sampleMethod() Test Suite
describe('sample Method', () => {
it('should match two objects', () => {
// Preparing
const sampleRequest: sampleRequestType = {
key: '0',
status: 'success',
creation_time: new Date(),
attempts: 0,
last_attempt_time: new Date()
};
// Executing
const result = sampleobject.sampleMethod();
// Verifying
expect(result).toEqual(sampleRequest); // assume result also return the same value as sampleRequest
});
});

由于 Jest 是在茉莉花之上开发的,您可以使用这个

const mockDate = new Date(1434319925275);
spyOn(window, 'Date').and.callFake(() => {
return mockDate;
});

@hari您可以重构sampleMethod并删除对 Date 对象的硬依赖关系。

与其直接实例化 Date 对象(new Date)在方法内部,不如更改方法并接收 date 对象作为参数。

这样,你可以很容易地模拟日期依赖关系。

最新更新