gpt4 book ai didi

node.js - 为什么 Jest 没有在这个 Node 测试中完成异步操作?

转载 作者:搜寻专家 更新时间:2023-11-01 00:35:33 33 4
gpt4 key购买 nike

我有以下简单的测试设置:

test('what did I do to deserve this', async () => {
expect.assertions(1)

const data = await fetchData() // or fetchData2
expect(data).toBe('peanut butter')
})

async function fetchData () {
return "peanut butter"
}

async function fetchData2 () {
return knex.select('name').from('foos')
}

当我使用 fetchData 时,jest 愉快地结束了。
但是当我使用 fetchData2 时,它会提示:

Jest did not exit one second after the test run has completed.

This usually means that there are asynchronous operations that weren't stopped in your tests. Consider running Jest with --detectOpenHandles to troubleshoot this issue.

数据变量确实有来自数据库查询的结果,API 中的其他调用者可以很好地解析查询并继续执行其他语句。

我试过:

  1. --detectOpenHandles 标志,但它没有显示任何内容。
  2. fetchData2 设置 expect pass,以防它是 the issue described here
  3. done arg 传递给 test 中的异步函数。它确实存在,但调用它并不能修复警告。
  4. 向它抛出 try/catch block

感谢您的帮助,让这一切变得快乐。

事物的版本:

  • Node v11.1.0
  • “开 Jest ”:“^23.6.0”
  • “膝盖”:“^0.15.2”

最佳答案

强行关闭 Jest 而不是 DB 连接:

--forceExit

所以我的测试脚本看起来像这样,

"scripts": {
"test": "jest --forceExit"
}

关于node.js - 为什么 Jest 没有在这个 Node 测试中完成异步操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53266915/

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