2016-12-30 11 views
4

私は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つの新たなブレークポイントを設定する際に作業を開始ブレークポイントを偶然見つけました。その後、この単一ファイル内のすべての後続のブレークポイントが期待通りに機能します。私にはバグのように見えます。

+0

私は同じボートに乗っています。テストファイルまたはブレークポイントを持つファイルに 'debugger;'を追加しても、ブレークポイントを持つ行が実行されたときに実行が停止されませんでした。これがバグだと仮定すると、誰がそれを所有するのでしょうか? – givanse

+0

おそらくバグではなく、私は最小限のテストケースを構築しています。/ https://github.com/givanse/vscode-debug-mocha-tests他の設定ファイルや依存関係は、何かを混乱させるものでなければなりません。 – givanse

+0

私はTypescriptを使用している間、あなたはJSテストを書いています。それは問題の一部かもしれません。 –

答えて

1

起動オプションで"protocol": "inspector",を使用すると、すべてが実行された後にテストプロセスが決して止まらないという厄介な副作用があったとしても、私はしばらくの間続けました。私は毎回実行後にタスクを終了しなければならなかった。だから私は別の問題を見つけることを試みると思いますが、私は成功しました。解決策は簡単です:起動オプションにoutfilesオプションを追加します。そうしないと、vscodeはTSソースフォルダ内のマップを検索します。追加によって:

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

すべてがうまく機能し始めました。 vscodeが、この設定がないためにソースマップを見つけることができないという警告を表示すると便利です。

関連する問題