我正在使用Mocha(和Chai)進行NodeJS模塊的單元測試,並且希望在Visual Studio代碼中對其進行調試。我在test
子文件夾中有一個TypeScript文件,並進行了一些測試。 VScode在out目錄中生成.js和.map文件(通過tsc watch模式任務)。我的tsconfig.json文件包含以下設置:在調試摩卡測試時未命中Visual Studio代碼中的斷點
{
"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 dir包含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
}
理想情況下,我想有一個運行配置,這樣我就不需要手動運行摩卡。有了這些設置,我至少可以運行測試:
{
"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
}
但仍然沒有斷點。
需要什麼才能使兩個方案中的至少一個工作?
更新:同時,我也發現偶然的斷點開始當你在測試代碼的某個位置添加一個debugger;
命令並至少設置一個斷點清新它上debugger;
停止後工作。之後,此單個文件中的所有後續斷點都按預期工作。看起來幾乎像是一個bug。
我在同一條船上。在執行斷點的行時,在測試文件或帶有斷點的文件中添加'調試器'不會停止執行。假設這是一個錯誤,誰會擁有它? – givanse
也許不是一個bug,我構建了一個最小的測試用例,它的工作原理如下:/ https://github.com/givanse/vscode-debug-mocha-tests一些其他的配置文件或依賴項必須弄亂事情。 – givanse
那麼,你寫了一個JS測試,而我正在使用Typescript。這可能是這個問題的一部分。 –