【问题标题】:jest.setTimeout is not working in setupFilesjest.setTimeout 在 setupFiles 中不起作用
【发布时间】:2019-02-21 16:51:12
【问题描述】:

我正在使用 Jest 来测试我的 REST API。我的大多数 API 端点都需要超过 5 秒才能返回,因此我需要增加 Jest 中指定的 5000 毫秒的默认超时时间。

我有 2 个测试文件,假设: foo.test.js bar.test.js

现在,我可以通过以下两种方式摆脱超时错误:

  1. 将超时值设置为大于 5000,作为 testit 方法的第三个参数。这很好用,但我需要更新所有现有的测试用例。
  2. 在我的每个测试文件的顶部添加jest.setTimeout(20000);。这也很好用。但是,它仍然需要我更新所有现有的测试文件。

我发现我可以在单独的文件中指定 jest.setTimeout(20000);,并在 package.json 中的 jest 配置选项中指向 setupFiles。我这样做了,但是超过 5000 毫秒的超时错误又开始出现了。我的 setupFile 正在正确加载,我通过添加一些 console.log 语句来检查它。但似乎jest.setTimeout(20000) 对测试用例没有任何影响。

【问题讨论】:

    标签: javascript node.js jestjs


    【解决方案1】:

    docssetupFilesAfterEnv

    setupFiles 在环境中安装测试框架之前执行

    (该信息可能也应该添加到文档的setupFiles 部分。)


    setupFiles 在安装测试框架之前运行。我有点惊讶jest.setTimeout 是在安装文件中定义的。在任何情况下,在setupFiles 的文件中调用jest.setTimeout 都不起作用。

    改为使用运行的setupFilesAfterEnv

    在环境中安装测试框架后立即


    请注意,setupFilesAfterEnvintroduced in version 24.0.0

    如果您使用的是较早版本的 Jest,请改用较旧的 setupTestFrameworkScriptFile

    【讨论】:

    • 嘿,谢谢@brian-lives-outdoors。我已经完全按照您提到的方式解决了这个问题。首先尝试使用setupFilesAfterEnv,因为我使用的是23.x.x,所以不支持它,最后让它与setupTestFrameworkScriptFile 一起使用。感谢您的帮助。
    猜你喜欢
    • 2021-01-29
    • 2020-01-25
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    • 2021-10-19
    • 2020-08-09
    • 2014-09-02
    • 1970-01-01
    相关资源
    最近更新 更多