由于拆卸不当导致 Jest 测试泄漏

问题描述

在使用 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"
  }

不要忘记停止然后启动服务器!