gpt4 book ai didi

javascript - Jest 单元测试 - 异步测试失败超时

转载 作者:行者123 更新时间:2023-12-01 02:33:26 25 4
gpt4 key购买 nike

我收到以下错误消息“超时 - 在 jasmine.DEFAULT_TIMEOUT_INTERVAL 指定的超时内未调用异步回调。”最重要的是,我还收到一条错误消息,指出在期望 2 个断言的同时执行了 0 个断言。

我尝试使用 jest.setTimeout(10000) 将超时时间延长至 10 秒,这应该足以执行该代码,但问题仍然存在。

我知道 m.employeeGetAll() 可以工作,因为当我使用浏览器测试我的 Web 应用程序时,我可以在 View 中看到员工列表。

这是我的测试的样子

it('Lists all employees successfully', () => {
expect.assertions(2);
return m.employeeGetAll().then(result => { //m.employeeGetAll() returns a promise
expect(result).toBeDefined();
expect(result.length).toBe(3);
});
});

最佳答案

我发现的问题是异步代码的工作方式。

代码片段中看不到的是在我的测试文件末尾对 mongoose.connection.close(); 的调用。

此调用必须在 Jest 单元测试框架的 afterEach()afterAll() 函数内完成。否则,在测试完成之前,与数据库的连接将被关闭,因为我的 Controller 方法中的所有调用都是异步的;这会导致不会返回任何 promise ,并且代码会超时。

由于我使用 beforeAll()afterAll(),在所有测试开始之前从数据库加载数据一次,并在结束时清除数据库在所有测试中,我还在 beforeAll() 中包含了使用 mongoose 连接到数据库的调用。

希望这可以帮助那些也陷入我的处境的人。

关于javascript - Jest 单元测试 - 异步测试失败超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48142811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com