首页 > 解决方案 > jest.setTimeout 在 setupFiles 中不起作用

问题描述

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

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

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

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

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

标签: javascriptnode.jsjestjs

解决方案


文档setupFilesAfterEnv

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

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


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

相反,使用setupFilesAfterEnvwhich runs

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


请注意,在版本setupFilesAfterEnv引入24.0.0

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


推荐阅读