.settings 在 Microsoft Visual Studio 中不工作 'mocha' Windows 上的代码

.settings not working 'mocha' in Microsoft Visual Studio Code on Windows

是否可以使用 Windows 7 上的 Visual Studio 代码向某人的 Mocha 测试添加断点?

我尝试 运行 使用以下设置进行测试。 (参考 & 。)

{
    "name": "Unit tests",
    "type": "node",
    "program": "node_modules/mocha/bin/_mocha",
    "stopOnEntry": false,
    "args": ["test/*.js"],
    "cwd": ".",
    "runtimeExecutable": "C:/Program Files/nodejs/node.exe",
    "env": { }
}
// Visual Studio Code 0.3.0
// Windows7(64bit)
// node v0.12.2
// mocha@2.2.5

但是接下来会报错:

can't launch program 'c:\Users\xxx\study_mocha\node_modules\mocha\bin_mocha'; enabling source maps might help

我可以通过 hack alert 将 _mocha 复制到 mymocha.js 来完成某种工作。然后 Code 将其识别为 run\start。它总是 运行 测试,但并不总是达到断点。我发现如果我 "stopOnEntry": true, 在入口处,然后在 describe 和 it 语句上设置断点,我可以在测试中命中断点。

我的另一个提示是,当测试 运行 都通过时,调试器 window 就会关闭,您不会满意地看到通过的测试输出。因此,如果我真的在尝试调试,我会放一个 assert.equal(1,2),这样它就会失败,它将等待按键(我会看到结果页面)。

我知道这不是一个很好的答案。这几乎是测试版软件的变通方法。 0.5.0

{
            "name": "Classification Tests",
            "type": "node",
            "program": "C:/c2/npm-global/node_modules/mocha/bin/myMocha.js",
            "stopOnEntry": true,
            "args": ["classificationTests.js"],
            "cwd": ".",
            "runtimeExecutable": null,
            "env": { }
        },  

我通常用

开始摩卡咖啡
mocha --debug-brk

然后在 Visual Studio 中使用 Attach 进行代码调试。工作起来很有魅力,无需硬编码任何东西。

这个解决方案对我有用

    {
        "name": "Mocha test",
        "type": "node",
        "request": "launch",
        "cwd": "${workspaceRoot}",
        "args": [
            "mochapack",
            "--timeout 20000",
            "--inspect-brk", 
            "--webpack-config=node_modules/@vue/cli-service/webpack.config.js",
            "--require tests/Vue/setup.js",
            "--require tests/Vue/mock-local-storage",
            "\"tests/**/*.spec.ts\""
        ],
        "windows": {
            "program": "${workspaceFolder}/node_modules/mochapack/bin/mochapack",
        },
        "internalConsoleOptions": "openOnSessionStart"
      }