问题描述
在使用 Jest 进行测试时,我收到一条警告说“工作进程未能正常退出并已被强制退出。这可能是由于拆解不当导致测试泄漏。尝试使用 --detectOpenHandles 运行以查找泄漏.”我意识到这是因为在其中一个函数内部我使用了使用 Redis 的 Bull https://github.com/OptimalBits/bull。因此,将任务添加到队列时会导致此警告。我使用默认的 Bull 配置(无配置)。我确实有一个 Jest 使用的队列上的 add 函数的模型,但它没有帮助。
const notificationQueue = {
add: jest.fn().mockImplementation((data: any,opts?: JobOptions) => {}),};
我想知道是否有办法避免此警告。如果它有助于我在内存中使用 mongo 进行测试,但 redis 是一个实际的。作为旁注,当我单独运行每个测试套件时,我没有看到此警告,只有在我运行所有测试时才看到。
解决方法
按照警告中的建议,在 package.json 文件中的 jest 脚本中添加 --detectOpenHandles
选项:
"scripts": {
"test": "jest --watchAll --detectOpenHandles"
}
不要忘记停止然后启动服务器!