我的单元测试是通过Grunt使用Karma / Jasmine运行的。我跑的时候
grunt test
测试从命令行执行。
在Visual Studio Code中打开项目时,我可以使用Tasks: Run Test Task
运行相同的命令。 VSCode使用test
参数执行Grunt并显示输出。
在这种情况下,如何调试VSCode运行的测试用例?当我按 F5 时,会打开launch.json
模板文件。我需要为program
,args
等提供什么来启动/调试由grunt test
运行的相同测试用例?
我尝试了以下内容:
program
:/usr/local/bin/grunt
args
:["test"]
这成功启动了Grunt进程并执行了测试,但它并没有在我的测试代码中的断点处停止。
除此之外,它会在几秒钟后关闭(或崩溃)整个VSCode进程。不确定这是VSCode中的错误还是上述运行配置的结果。
答案 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的文件夹中)。