gpt4 book ai didi

node.js - 调试 mocha 测试时未命中 Visual Studio Code 中的断点

转载 作者:搜寻专家 更新时间:2023-10-31 23:20:12 36 4
gpt4 key购买 nike

我正在使用 Mocha(和 Chai)对 NodeJS 模块进行单元测试,并希望在 Visual Studio 代码中对其进行调试。我在 test 子文件夹中有一个 TypeScript 文件,其中包含一些测试。 VScode 在 out 目录中生成 .js 和 .map 文件(通过 tsc watch 模式任务)。我的 tsconfig.json 文件包含这些设置:

{
"compilerOptions": {
"compileOnSave": true,
"module": "commonjs",
"target": "es6",
"outDir": "out",
"removeComments": true,
"noImplicitAny": true,
"sourceMap": true,
"inlineSources": true,
"isolatedModules": false,
"allowSyntheticDefaultImports": true,
"experimentalDecorators": true
},
"include": [
"src/**/*", "parser/**/*", "test/**/*"
],
"exclude": [
"node_modules",
".vscode-test"
]
}

out 目录包含 3 个包含的 3 个子目录。到目前为止一切正常。

我可以使用这个命令运行我的测试:

mocha --compilers ts:ts-node/register,tsx:ts-node/register

在 vscode 之外。然后我使用 --debug-brk 开关运行这段代码并将 vscode 附加到它。这有效,但没有命中断点。 launch.json 中的配置是:

    {
"name": "Attach",
"type": "node",
"request": "attach",
"port": 5858,
"address": "localhost",
"restart": false,
"sourceMaps": true,
"outDir": null,
"localRoot": "${workspaceRoot}",
"remoteRoot": null
}

理想情况下,我希望有一个运行配置,这样我就不需要手动运行 mocha。使用这些设置,我至少可以运行测试:

    {
"name": "Mocha",
"type": "node",
"request": "launch",
"cwd": "${workspaceRoot}",
"preLaunchTask": "tsc",
"program": "${workspaceRoot}/node_modules/mocha/bin/_mocha",
"args": [ "--no-timeouts", "--colors", "${workspaceRoot}/out/test/**/*.js" ],
"stopOnEntry": true,
"runtimeExecutable": null,
"env": {
"NODE_ENV": "testing"
}
"sourceMaps": true
}

但仍然没有命中断点。

要使这 2 个方案中的至少一个起作用,需要什么?

更新:与此同时,我偶然发现当您在测试代码的某处添加一个调试器;命令并设置至少一个新断点时,断点开始工作在 debugger; 上停止之后。之后,此单个文件中的所有后续断点都按预期工作。在我看来几乎就像一个错误。

最佳答案

在启动选项中使用 "protocol": "inspector", 帮助我继续了一段时间,尽管这有令人讨厌的副作用,即测试过程在执行完所有内容后从未停止。每次运行后我都必须终止任务。所以我虽然我会再试一次找到问题,但我成功了。解决方案很简单:将 outfiles 选项添加到您的启动选项,否则 vscode 将在 TS 源文件夹中查找 map 。通过添加:

        "outFiles": [
"${workspaceRoot}/out/**/*.js"
],

一切开始顺利进行。如果 vscode 会打印一条警告,指出它由于缺少此设置而无法找到源映射,那将非常有帮助。

关于node.js - 调试 mocha 测试时未命中 Visual Studio Code 中的断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41399071/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com