Javascript 使用jest mock隔离运行异步函数

Javascript 使用jest mock隔离运行异步函数,javascript,node.js,ecmascript-6,jestjs,Javascript,Node.js,Ecmascript 6,Jestjs,node.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将被执行,它将击中我的后端和数据库,如何模拟该函数以便我的测试可

node.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将被执行,它将击中我的后端和数据库,如何模拟该函数以便我的测试可以独立运行?

您需要实际模拟
用户
对象。我没有完整的上下文,但您可能有类似于
constuser=require('../User.js')
的内容。所以,开玩笑的话,你可以通过做

jest.mock('../user.js')
mock也接受回调,您可以在那里添加自己的实现,但我更喜欢有一个单独的mock文件夹,您可以在其中保存自己的mock实现,因为这可能会使测试更加混乱


您可以在调用jest.mock和.

的地方查看它的用法。真的吗?模拟整个用户对象?你可以只模拟你需要的方法,我发现它更干净,因为以后你也可以将它用于其他测试,或者有一些更复杂的逻辑。