I was specifically interested in how to start only a specific test with the interactive debugger. I did not want to change the launch config every time I worked on a new test and I also wanted to handle mocha test written in typescript.
I normally have a tsc process started in separate command window running tsc -w command.This watches all files and compiles when needed.
Here are the changes I made to Visual Studio Code and my environment.
In my project I installed:
- typescript
 - mocha
 - mocha-typescript
 
I decided to hide all TypeScript generated files via adding a files.exclude directive to my USER SETTING (access via File:Preferences:Settings), like so:
"files.exclude": {
    "**/.git": true,
    "**/.svn": true,
    "**/.hg": true,
    "**/CVS": true,
    "**/.DS_Store": true,
    "**/*.js.map": true,
    "**/*.js": { "when": "$(basename).ts"}
}
Then came the harder part. Finding a launch.config elements that would work (access via Debug:Open Configurations). I wanted to be able to open the debug pane and open the typescript test file I was working on, set breakpoints and click on "Start Debugging" button (green play button) and have the process kick off correctly.
This was not as trivial as I initially envisioned and much googling and blog reading ensued.
Here is the launch.config segment that worked for me.
{
    "type": "node",
    "request": "launch",
    "name": "Debug TS mocha",                  
    "program": "${workspaceRoot}/node_modules/mocha/bin/_mocha",
    "stopOnEntry": false,
    "args": ["${fileBasenameNoExtension}.js","--no-timeouts", "--trace-warnings","--colors"],
    "cwd": "${fileDirname}",
    "sourceMaps": true,
    "outFiles": [],
    "env": { "NODE_ENV": "testing"}
} 
This works well with standard mocha js test as well as typescript test files. For typescript you need to either have a watcher going or add a preprocess to the launch.config that transpiles your typescript first.
Hope this will save someone the head scratching I went though.
Cheers,
B.
No comments:
Post a Comment