如何使用Visual Studio Code中的Mocha调试在Typescript中编写的单元测试

Ver*_*reb 6 unit-testing mocha.js typescript visual-studio-code

我写了一个Typescript库.单元测试也使用Mocha框架在Typescript中编写.我想直接执行单元测试而不编译成javascript.这适用于此命令:

./node_modules/mocha/bin/mocha  ./test/*.test.ts  --require ts-node/register
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下启动设置从Visual Studio Code调试单元测试:

{
    "type": "node",
    "request": "launch",
    "name": "Mocha Tests",
    "program": "${workspaceRoot}/node_modules/mocha/bin/_mocha",
    "args": [
        "--require",
        "ts-node/register",
        "${workspaceRoot}/test/*.test.ts"
    ],
    "internalConsoleOptions": "openOnSessionStart"
}
Run Code Online (Sandbox Code Playgroud)

这样我就可以从VS Code调试Mocha本身,而不是单元测试.Mocha为测试生成单独的进程,调试器无法自动附加到子进程.

从Visual Studio Code调试Typescript单元测试的正确方法是什么?

mor*_*eus 9

将此线程更新为对我们有用的配置(自我注释)。

  • /sf/answers/3149970071/--compilers中的选项已弃用
  • ts:ts-node/register给出错误
  • 添加“${relativeFile}”还会在位置 6 处给出错误 Unexpected token / in JSON,因为“${relativeFile}”解析为 .vscode/launch.json 。

更新的配置

{            
            "name": "mocha tests",
            "type": "node",
            "protocol": "inspector",
            "request": "launch",
            "program": "${workspaceRoot}/node_modules/mocha/bin/_mocha",
            "stopOnEntry": false,
            "args": [ "-r", "ts-node/register", "${workspaceRoot}/test/**/*.spec.ts", "--no-timeouts"],
            "cwd": "${workspaceRoot}"
}
Run Code Online (Sandbox Code Playgroud)


px1*_*1mp 5

如果有人觉得它有用,以下launch.json配置片段对我有用,没有任何解决方法:

    {
    "name": "mocha tests",
    "type": "node",
    "protocol" : "inspector",
    "request": "launch",
    "program": "${workspaceRoot}/node_modules/mocha/bin/_mocha",
    "stopOnEntry": false,
    "args": [ "--compilers", "ts:ts-node/register", "--no-timeouts", "${relativeFile}"],
    "cwd": "${workspaceRoot}"
    }
Run Code Online (Sandbox Code Playgroud)

正常工作对我node v7.10.0typescript 2.4.0和Visual Studio代码1.13.1。双方mochatypescript都在本地安装node_modules