我使用jest.fn()模拟了Date.now()函数,并且为该函数的时间进行了硬编码。 我的测试由于日期不匹配而失败。我已经附上了测试结果的输出。
const DATE_NOW_STUB = jest.fn(() => "2019-12-20T11:31:59.642+05:30");
global.Date.now = DATE_NOW_STUB;
这是我的测试
it("Update User", async () => {
mockingoose(User).toReturn(MOCK_USER, 'findOne');
console.log("MOCK", MOCK_USER);
return User.findById({id: "5dfc63d7c3e8026e8"}).then(doc => {
console.log("doc", doc);
expect(DATE_NOW_STUB).toHaveBeenCalled();
expect(doc).toMatchObject(MOCK_USER) // fails in this case..
});
});
输出:
- "updated_at": "2019-12-20T11:31:59.642+05:30",
+ "updated_at": 2019-12-20T06:01:59.642Z,
在模型对象中,我已将Date.now()用于update_at。
Object.assign(userDocument, { ..._data, ...{ updated_at: Date.now() } });