如何在Visual Studio代码中使用Karma / Jasmine调试单元测试?

时间:2017-01-13 15:22:06

标签: debugging karma-runner visual-studio-code

我希望能够在Visual Studio Code中调试单元测试,但到目前为止它已经是一个混合包。

我的设置:

launch.json

{
   "version": "0.2.0",
   "configurations": [
           {
              "name": "Debug tests",
              "type": "chrome",
              "request": "attach",
              "port": 9222,
              "sourceMaps": true,
              "webRoot": "${workspaceRoot}"
           }
   ]
}

karma.config.js

customLaunchers: {
   Chrome_with_debugging: {
     base: 'Chrome',
     flags: ['--remote-debugging-port=9222']
   }
}

这似乎在某种程度上起作用,如果我启动VS Code调试器它似乎附加(底栏变为橙色)。如果我做出改变,Karma也会启动调试器 - 但它总是在zone.js暂停(顺便说一下这是一个Angular项目),而不会以任何方式干扰:

Paused in zone.js

如果我点击'继续',它实际上会击中我的断点

enter image description here

我可以检查一些变量,但不能检查所有变量,

Some vars are displayed, some not

例如,我看不到actual传入Jasmine expect方法的值。

所以a)为什么调试器总是在zone.js内暂停 - 测试的代码来自Redux reducer并且在任何Angular上下文之外被调用,并且b)关于无法使用的内容我缺少什么检查局部变量(现在是一个showstopper)?

1 个答案:

答案 0 :(得分:12)

在karma.conf.js中,我在您的版本中更新了添加的调试选项。

customLaunchers: {
   Chrome_with_debugging: {
     base: 'Chrome',
     flags: ['--remote-debugging-port=9222'],
     debug: true
}}

<强> launch.json 将以下代码段添加为启动配置

{
    "name": "Debug tests",
    "type": "chrome",
    "request": "attach",
    "port": 9222,
    "sourceMaps": true,
    "webRoot": "${workspaceRoot}"
}

然后使用以下命令触发测试,

ng test --browsers Chrome_with_debugging

使用Visual Studio代码调试选项&#34;调试测试&#34;加入UT。有了这个,我就可以使用<34; Visual Studio Code + Debugger for Chrome扩展程序&#34;中的断点来调试单元测试。

此致

Basanth