Mockingoose Date.now()与模拟数据不匹配

时间:2019-12-23 12:52:09

标签: mocking jestjs mockingoose

我使用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() } });

0 个答案:

没有答案