docker - 在具有某些 CPU/RAM 配置的 docker 中运行时 Jest 挂起

标签 docker jestjs

几天前,我将我的代码库从 jest 26 升级到 27。

在我的本地环境中运行测试非常有效,但是当我尝试在我的 CI 机器上运行它们时,测试“永远不会”停止。

实际上,在 CI 中,当尝试按顺序而不是并行运行测试时,进程会正确退出,例如使用 --runInBand --detectOpenHandles --forceExit

我尝试在本地构建和运行相同的 docker...并且成功了。

随机更改一些 docker 的 CPU/RAM 配置,我得到了相同的结果:进程挂起。

docker config

测试挂起: tests hanging

在 docker 中运行 top: docker top

如您所见,考虑到 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/

相关文章:

带有 Traefik 的 Docker Swarm : containers are up but getting 404

docker - 如何在 Intellij Idea 上的 docker 容器上编译 Flutter 应用程序?

reactjs - Jest 快照不适用于某些 Semantic-UI-React 组件

javascript - Jest 是否异步运行用 describe() 定义的测试套件?

javascript - 如何将 Jest 测试移动到/test 文件夹并让它们运行?

spring - 如何使用命令行启动特定的Spring Batch作业

django - 在 Docker 上使用 Nginx、uWSGI 和 Postgres 配置 Django

java - 在 Kubernetes 中,我怎样才能有一种访问模式来一次允许一个 pod 写入而许多 pod 只读?

ios - 如何测试使用 Jest 导入自定义 native 模块的 React Native 组件?

javascript - 如何在 Jest 自定义匹配器中打印漂亮的对象差异?