8

我正在努力让 Visual Studio Code 调试器与 Jest 测试一起工作。

这是我的launch.json:

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Jest All",
      "program": "${workspaceFolder}/node_modules/jest/bin/jest",
      "args": ["--runInBand"],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen",
      "sourceMaps": true
    }
  ]
}

这是我的带有几个断点的 Jest 测试:

在此处输入图像描述

当我点击绿色播放按钮以使用调试器运行测试时,断点永远不会被命中。

任何帮助,将不胜感激

4

6 回答 6

6

我个人使用这个配置

{
  "name": "Launch e2e test",
  "type": "node",
  "request": "launch",
  "env": {
    "NODE_ENV": "test"
  },
  "args": [
    "--colors",
    "--config=${workspaceFolder}/jest-e2e.config.js",
    "--runInBand",
    "--coverage"
  ],
  "runtimeArgs": [
    "--nolazy"
  ],
  "windows": {
    "program": "${workspaceFolder}/node_modules/jest/bin/jest",
  },
  "outputCapture": "std",
  "internalConsoleOptions": "openOnSessionStart"
}

通过您的配置文件更改 jest-e2e.config.js。并删除或保留覆盖

就像 Laura Slocum 说的,你肯定会遇到行号问题。在我的情况下,个人认为问题来自开玩笑的配置,即转换:

  transform: {
    "^.+\\.(t|j)s$": "ts-jest"
  },
于 2018-09-17T20:27:45.677 回答
3

这个配置让我调试玩笑测试。不幸的是,在组件中击中断点不会显示正确的行,即使它正在单步执行正确的代码。我相信这可能是一个 VSCode 错误

{
  "name": "Jest", // This is the configuration name you will see in debug sidebar
  "type": "node",
  "request": "launch",
  "port": 5858,
  "address": "localhost",
  "stopOnEntry": false,
  "runtimeExecutable": null,
  "env": {
    "NODE_ENV": "development"
  },
  "console": "integratedTerminal",
  "preLaunchTask": "compile",
  "runtimeArgs": [
    "--inspect-brk", // node v8 use debug-brk if older version of node
    "${workspaceRoot}/node_modules/.bin/jest",
    "--watch",
    "--bail",
    "--runInBand"
  ],
  "cwd": "${workspaceRoot}"
},
于 2018-09-17T20:01:19.540 回答
1

我在关闭行号时遇到了同样的问题。在源文件中,我有将近 30 行需求,并且在调试器中加载的测试文件在每个需求之间添加了一个空格。所以在 vscode 中加载的文件大约长了 60 行。

我发现这篇文章解决了我的问题:Debugging Jest Tests in VS Code: Breakpoints Move

于 2019-02-08T19:25:32.370 回答
0

对我来说问题是programlaunch.json 中属性的值。如果你的 launch.json 如下:

        "program": "${workspaceFolder}/node_modules/jest/bin/jest"

检查 ${workspaceFolder}/node_modules/jest/bin/jest 是否真的有效。对我来说,node_modules 在这里不存在,而是在workspaceFolder.

于 2020-05-13T16:11:21.843 回答
0

以下是尝试其他所有内容后唯一对我有用的launch.config:|

{
    "version": "0.2.0",
    "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Jest",
      "program": "${workspaceRoot}/node_modules/jest/bin/jest.js",
      "args": [
          "-i"
      ],
      "skipFiles": [
          "<node_internals>/**/*.js", "node_modules",
      ]
    }
  ]
}
于 2020-11-11T17:20:20.420 回答
0

如果您在运行实际测试之前使用转换器babel或转换您的测试,vscode 中的调试器可能无法工作。swc

对我来说,我只会使用debugger.

于 2021-03-09T07:47:47.120 回答