typescript 调试测试时自动设置jest超时的最佳方法是什么?

5vf7fwbs  于 2023-01-21  发布在  TypeScript
关注(0)|答案(3)|浏览(162)

我有一个nodejs项目。我正在使用调试器(如果需要的话,在IntelliJ中)来逐步执行测试。我想使用最佳实践来配置我的项目,以便在使用调试器时将测试超时修改为比默认的5秒更长。我知道我可以在package.json中放入以下行来更改超时。

{
  "name": "my-project",
  "jest": {
    "testTimeout": 20000
  }
}

但是我正在寻找一种只在调试时(并且自动地)修改超时的方法,我确信有一种好方法,但是我对nodejs和设置各种环境的约定/机制相当陌生。

vfh0ocws

vfh0ocws1#

如果使用create-react-app,则setupFilesAfterEnv配置为src\setupTests.ts
这是执行/调试任何测试之前的入口点,如果您可以检测到您处于DEBUG模式,则可以设置新的超时。
例如,

if (process.env.DEBUG === 'jest') {
  jest.setTimeout(5 * 60 * 1000);
}

在VS代码中,您可以将launch.json配置添加为documented,并将"DEBUG": "jest"添加到env

{
  "name": "Debug CRA Tests",
  "type": "node",
  "request": "launch",
  "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/react-app-rewired",
  "args": ["test", "--runInBand", "--no-cache", "--watchAll=false"],
  "cwd": "${workspaceRoot}",
  "protocol": "inspector",
  "console": "integratedTerminal",
  "internalConsoleOptions": "neverOpen",
  "env": {
    "CI": "true",
    "DEBUG": "jest"
  },
  "disableOptimisticBPs": true
}
pu3pd22g

pu3pd22g2#

我有点晚了,但是您也可以尝试使用https://www.npmjs.com/package/debugger-is-attached

import { debuggerIsAttached } from "debugger-is-attached";

// later:
const timeout = await debuggerIsAttached()
   ? 600000 // 10 minutes to debug
   : 5000; // the default 5s for jest
  • 免责声明:我是作者 *
6fe3ivhb

6fe3ivhb3#

这里有另一个简单的选择:

if (require('inspector').url()) {
  jest.setTimeout(600_000); // 10 minutes
}

该检查取自this post,它也指向本机检查器包的docs

相关问题