为什么 Jest 测试有时会在 CircleCI 上失败?

Ame*_*vic 2 unit-testing docker circleci jestjs ts-jest

我有针对 dockerized Neo4j 数据库运行的 Jest 测试,有时它们在 CircleCI 上失败。所有 25 个以上的错误消息是:

thrown: "Exceeded timeout of 5000 ms for a hook.
@*******api:     Use jest.setTimeout(newTimeout) to increase the timeout value, if this is a long-running test."
Run Code Online (Sandbox Code Playgroud)

由于它们有时会失败,例如每 25 次运行一次,我想知道是否jest.setTimeout可以解决该问题。我能够通过设置在本地使它们失败jest.setTimeout(10),但我不确定如何进一步调试它,或者除了小超时(默认 5000)之外是否还有其他问题。如果 1/25 或少数失败,或者所有其他套装都失败,我会理解,但只有一个包含该文件中所有测试的文件失败。而且它始终是同一个文件,因此永远不会是其他文件。

附加信息,在本地,单个文件在连接到临时数据库的时间内运行不到 1000 毫秒,与运行时只有几个文件的 dockerized 相比,这是巨大的

小智 6

对于看到此问题的任何人,我可以通过将标志添加--maxWorkers=2到 CircleCI 配置中的测试命令来解决此问题。有关详细信息,请参阅此处:https://support.circleci.com/hc/en-us/articles/360005442714-Your-test-tools-are-smart-and-that-sa-problem-Learn-about-when-optimization -出错-