私はNodeJSモジュールの単体テストにMocha(およびChai)を使用しており、Visual Studioコードでデバッグします。いくつかのテストでtest
サブフォルダにTypeScriptファイルがあります。 VScodeはoutディレクトリに.jsファイルと.mapファイルを生成します(tsc watchモードタスク経由)。マイtsconfig.jsonファイルには、これらの設定が含まれていますVisual Studioのブレークポイントは、mochaテストのデバッグ時にヒットしません。
{
"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"
]
}
をアウトdirが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
}
理想的には、私は手動でモカを実行する必要がないように、実行の設定を持っているしたいと思います。これらの設定では、少なくともテストを実行できます。
{
"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つのシナリオの少なくとも1つを動作させるためには何が必要ですか?
更新:その間、私はあなたがどこかのテストコードでdebugger;
コマンドを追加し、それがdebugger;
にを停止した後に少なくとも1つの新たなブレークポイントを設定する際に作業を開始ブレークポイントを偶然見つけました。その後、この単一ファイル内のすべての後続のブレークポイントが期待通りに機能します。私にはバグのように見えます。
私は同じボートに乗っています。テストファイルまたはブレークポイントを持つファイルに 'debugger;'を追加しても、ブレークポイントを持つ行が実行されたときに実行が停止されませんでした。これがバグだと仮定すると、誰がそれを所有するのでしょうか? – givanse
おそらくバグではなく、私は最小限のテストケースを構築しています。/ https://github.com/givanse/vscode-debug-mocha-tests他の設定ファイルや依存関係は、何かを混乱させるものでなければなりません。 – givanse
私はTypescriptを使用している間、あなたはJSテストを書いています。それは問題の一部かもしれません。 –