Javascript 使用jest mock隔离运行异步函数
node.jest中的异步等待jest模拟http请求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将被执行,它将击中我的后端和数据库,如何模拟该函数以便我的测试可
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和.的地方查看它的用法。真的吗?模拟整个用户对象?你可以只模拟你需要的方法,我发现它更干净,因为以后你也可以将它用于其他测试,或者有一些更复杂的逻辑。