几天前,我将我的代码库从 jest 26 升级到 27。
在我的本地环境中运行测试非常有效,但是当我尝试在我的 CI 机器上运行它们时,测试“永远不会”停止。
实际上,在 CI 中,当尝试按顺序而不是并行运行测试时,进程会正确退出,例如使用 --runInBand --detectOpenHandles --forceExit
。
我尝试在本地构建和运行相同的 docker...并且成功了。
随机更改一些 docker 的 CPU/RAM 配置,我得到了相同的结果:进程挂起。
如您所见,考虑到 top
所说的,这不是 CPU/RAM 的问题。
你有什么提示吗?
您需要更多信息吗?
最佳答案
经过几天的调试,我发现问题出在测试中的 RAM 量和一些内存泄漏。
我建议您使用 node --expose-gc ./node_modules/.bin/jest --logHeapUsage
命令来深入研究您可能遇到的问题。 https://jestjs.io/docs/cli#--logheapusage
这篇文章也帮助了我:https://chanind.github.io/javascript/2019/10/12/jest-tests-memory-leak.html
关于docker - 在具有某些 CPU/RAM 配置的 docker 中运行时 Jest 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68963858/