如何在Visual Studio代码中调试从Grunt运行的Jasmine测试?

时间:2015-12-03 15:12:49

标签: javascript node.js gruntjs jasmine visual-studio-code

我的单元测试是通过Grunt使用Karma / Jasmine运行的。我跑的时候

grunt test

测试从命令行执行。

在Visual Studio Code中打开项目时,我可以使用Tasks: Run Test Task运行相同的命令。 VSCode使用test参数执行Grunt并显示输出。

在这种情况下,如何调试VSCode运行的测试用例?当我按 F5 时,会打开launch.json模板文件。我需要为programargs等提供什么来启动/调试由grunt test运行的相同测试用例?

我尝试了以下内容:

  • program/usr/local/bin/grunt
  • args["test"]

这成功启动了Grunt进程并执行了测试,但它并没有在我的测试代码中的断点处停止。

除此之外,它会在几秒钟后关闭(或崩溃)整个VSCode进程。不确定这是VSCode中的错误还是上述运行配置的结果。

2 个答案:

答案 0 :(得分:3)

我不认为你现在可以做node --debug-brk grunt test这样的测试会激活茉莉花测试的东西 - 因为jasmine会在没有调试标志的情况下调用这些spec文件上的节点。我试过这个,这就是我得到的:

node --debug-brk=3691 --nolazy ../../../usr/local/bin/grunt kftest --schema=9.2.1 --dbtype=sqlite --target=builder/properties --spec=test/builder/properties/properties-spec.js 
Debugger listening on port 3691
Running "kftest" task
>> going to run with spec:  test/builder/properties/properties-spec.js
>> command: node --debug-brk=46307 /Users/computername/project/node_modules/jasmine-node/lib/jasmine-node/cli.js test/builder/properties/properties-spec.js
Running "shell:kftest" (shell) task
Debugger listening on port 46307

这不太有用,因为现在vscode的调试器将查看3691而46307没有被任何东西检查 - 而且我不知道如何告诉vscode也听这个端口。

Soooo我最终做的是按照这里发布的答案:Debugging jasmine-node tests with node-inspector

基本上我的vscode launch.json包含一个如下所示的配置:

{
  "name": "Jasmine-Node Debugging",
  "cwd": "${workspaceRoot}",
  "program": "${workspaceRoot}/node_modules/jasmine-node/lib/jasmine-node/cli.js",
  "request": "launch",
  "type": "node",
  "args": [
    "test/builder/properties/properties-spec.js"
  ]
}

希望有所帮助。

答案 1 :(得分:2)

此启动配置适用于VS Code 0.10.2:

{
    "name": "grunt",
    "type": "node",
    "request": "launch",
    "program": "/usr/local/bin/grunt",
    "args": ["test"],
    "stopOnEntry": false
}

在我的“测试”任务中设置断点使VS Code调试器停在那里。我必须在本地安装grunt(在我有Gruntfile的文件夹中)。