Node.js 使用jest.setTimeout的替代方法

Node.js 使用jest.setTimeout的替代方法,node.js,unit-testing,jestjs,integration-testing,Node.js,Unit Testing,Jestjs,Integration Testing,目前,我在NodeJS/Express/MongoDB应用程序中配置了一些测试(Jest+Supertest)。 根据我的经验,当服务器与MongoDB成功连接时,可能会有很大的不同(可能需要几秒钟) 我的测试失败,因为它在5000毫秒后超时(我相信这是默认超时) 通过在测试的第一部分中定义一个jest.setTimeout(15000),我可以绕过这个问题,这一切看起来如下: test('POST' + endpointUrl, async () => { jest.setTim

目前,我在NodeJS/Express/MongoDB应用程序中配置了一些测试(Jest+Supertest)。 根据我的经验,当服务器与MongoDB成功连接时,可能会有很大的不同(可能需要几秒钟)

我的测试失败,因为它在5000毫秒后超时(我相信这是默认超时)

通过在测试的第一部分中定义一个
jest.setTimeout(15000)
,我可以绕过这个问题,这一切看起来如下:

test('POST' + endpointUrl, async () => {
    jest.setTimeout(15000);

    const response = await request(app)
        .post(endpointUrl)
        .send(newTodo);

    ASSERTIONS
});

我想知道这是否是解决我的问题的正确方法。

如果您有一个异步函数,必须等待响应,只需使用
done
关键字作为测试回调参数

test('POST'+endpointUrl,异步(完成)=>{
常量响应=等待请求(应用程序)
.post(端点URL)
.send(newTodo);
断言
完成();
});
或:

test('POST'+endpointUrl,done=>{
请求(应用程序)
.post(端点URL)
.send(newTodo)
。然后(res=>{
断言
完成();
})
.catch(错误=>{
fail(`It必须完成,但由于:${error}`而被捕获);
})
});
有关更多信息,请查看此主题: