如何解决带有Node-postgresl更新查询的Node.js的Mocha测试由于异步/等待而挂起
有人可以告诉我这段代码为什么起作用:
const articleUpdated = async(pool: Pool,author: String): Promise<void> => {
const query = {
text:
'UPDATE articles SET end_time=NOW(),author=$1',values: [author],}
pool.query(query)
.then(result => { console.error('Test'); result.rows })
.catch(error => console.error(error))
}
此挂起时:
const articleUpdated = async(pool: Pool,values: ['test'],}
let { rows } = await pool.query(query)
console.log(rows)
}
上面的代码在正常应用中运行没有问题。但是,当我通过Mocha编写测试代码时,第一个包含query / then / catch的代码片段可以正常工作,并且测试顺利完成。但是,如果我使用async / await将代码更改为代码段2,则测试执行将挂在await pool.query(query)
行。
该代码不是直接通过Mocha调用的,而是通过其他模块之一调用的,而这些模块依次调用了上面的代码。我逐行执行测试,每次执行挂起时,await pool.query(query)
都将其挂起。
我的猜测是,可能是某些承诺未返回或未完成-或更新查询未更新任何记录。不确定。
就像我之前提到的,上面的代码是通过集成测试(在父方法上使用await
)调用的。调用与运行应用程序时的调用完全相同。
对于故障排除的任何提示,想法或建议,我们将不胜感激。
谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。