【问题标题】:Why Jest tests are SOMETIMES failing on CircleCI?为什么 Jest 测试有时会在 CircleCI 上失败?
【发布时间】:2022-10-18 09:57:42
【问题描述】:

我有针对 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."

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

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

【问题讨论】:

    标签: docker unit-testing jestjs circleci ts-jest


    【解决方案1】:

    对于看到这一点的任何人,我都可以通过在我的 CircleCI 配置中的测试命令中添加 --maxWorkers=2 标志来解决这个问题。详情见这里:https://support.circleci.com/hc/en-us/articles/360005442714-Your-test-tools-are-smart-and-that-s-a-problem-Learn-about-when-optimization-goes-wrong-

    【讨论】:

      【解决方案2】:

      纳曼的答案是完美的!我简直不敢相信,但它确实解决了我的问题。只是要特别清楚如何做到这一点:

      我将 test 脚本从我的 package.jsonjest 更改为 jest --maxWorkers=2。然后我推,它确实解决了我的错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-27
        • 1970-01-01
        • 1970-01-01
        • 2019-10-23
        • 1970-01-01
        • 1970-01-01
        • 2021-01-06
        • 1970-01-01
        相关资源
        最近更新 更多