Nodejs和Jest单元测试无法正常退出的问题
【Nodejs和Jest单元测试无法正常退出的问题】最近在编写Nodejs/Jest
单元测试时出现应用无法正常退出,明明单元测试已经执行完毕,但是应用就是卡住,无法正常退出,导致单元测试无法连续执行。由于应用较为复杂,很难以排查是什么原因导致的,经过分析原因主要如下:
- 未处理
async/Promise
会导致该原因,解决方法是在jest
中添加--detectOpenHandles
参数,添加该参数后,在运行时jest
会检测并给出提示,依此解决就可以。 - 还有一种情况是应用中存在未清理的
setInterval
也会导致此情况,这种情况比较隐蔽。解决方法也很简单,可以自己编写一个setSafeInterval
函数,替换一个应用中所有使用setInterval
的地方,记录一下定时器句柄,在退出前清理一下就可以了。
推荐阅读
- 急于表达——往往欲速则不达
- 第三节|第三节 快乐和幸福(12)
- 20170612时间和注意力开销记录
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- 对称加密和非对称加密的区别
- 眼光要放高远
- 樱花雨
- 前任
- 2020-04-07vue中Axios的封装和API接口的管理
- 烦恼和幸福