我有以下简单的测试设置:
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
时,笑话很开心。
但是当我使用fetchData2
时,它会抱怨:
测试运行一秒钟后,Jest没有退出。
这通常意味着有些异步操作不是 在测试中停止了。考虑使用
--detectOpenHandles
来解决此问题。
data变量确实具有db查询的结果,并且API中其他高级调用者可以很好地解决查询并继续执行其他语句。
我尝试过:
--detectOpenHandles
标志,但没有显示任何内容。fetchData2
为the issue described here的情况下传递期望值done
arg传递给test
中的异步函数。它确实存在,但是调用它不能解决警告。谢谢您的帮助。
事物的版本:
答案 0 :(得分:4)
要强制关闭Jest而不是DB Connection:
--forceExit
所以我的测试脚本看起来像这样,
"scripts": {
"test": "jest --forceExit"
}
答案 1 :(得分:1)
您需要在测试套件的末尾调用knex.destroy()
才能拆除连接池。