使用笑话模拟隔离运行异步功能

时间:2020-10-16 06:33:02

标签: javascript node.js ecmascript-6 jestjs

在anode.jest中异步等待jest模拟http请求

I can write my test like so
it('works with async/await', async () => {
  expect.assertions(1);
  const data = await user.getUserName(4);
  expect(data).toEqual('Mark');
});

但是getUserName将被执行,并且会命中我的后端和数据库,如何模拟该函数,以便我的测试可以独立运行?

1 个答案:

答案 0 :(得分:0)

您实际上需要模拟user对象。我没有完整的上下文,但您可能有类似const User = require('../user.js')的名称。因此,只要开玩笑,您就可以这样做

jest.mock('../user.js')

jest.mock还接受一个回调,您可以在其中添加自己的实现,但我更喜欢使用单独的 mocks 文件夹,在其中可以保留自己的模拟实现,因为它可能会使测试成为现实。有点混乱。

您可以在调用jest.mock然后在here处检查mock implementation的用法。