Visual studio 如何在VisualStudio代码中调试Karma测试?
我想在VS代码中调试Karma测试,但我没有找到如何调试的方法。有没有办法做到这一点,或者我必须使用另一个IDE(WebStorm)?试试看Visual studio 如何在VisualStudio代码中调试Karma测试?,visual-studio,karma-runner,visual-studio-code,Visual Studio,Karma Runner,Visual Studio Code,我想在VS代码中调试Karma测试,但我没有找到如何调试的方法。有没有办法做到这一点,或者我必须使用另一个IDE(WebStorm)?试试看 { “名字”:“茉莉花”, “类型”:“节点”, “请求”:“启动”, “程序”:“${workspaceRoot}/node_modules/jasmine/bin/jasmine.js”, “stopOnEntry”:false, “args”:[ “JASMINE_CONFIG_PATH=${workspaceRoot}/spec/support/J
{
“名字”:“茉莉花”,
“类型”:“节点”,
“请求”:“启动”,
“程序”:“${workspaceRoot}/node_modules/jasmine/bin/jasmine.js”,
“stopOnEntry”:false,
“args”:[
“JASMINE_CONFIG_PATH=${workspaceRoot}/spec/support/JASMINE.json”
],
“cwd”:“${workspaceRoot}”,
“runtimeArgs”:[
“诺拉齐”
],
“环境”:{
“节点环境”:“开发”
}
}
您可以通过将调试器附加到Chrome实例来调试Karma。您需要将launch.json
config设置为如下内容:
{
“版本”:“0.2.0”,
“配置”:[
{
“类型”:“铬”,
“请求”:“附上”,
“姓名”:“附加业力铬”,
“地址”:“本地主机”,
“港口”:9333,
“路径映射”:{
“/”:“${workspaceRoot}/”,
“/base/”:“${workspaceRoot}/”
}
}
]
}
但是你也需要调整你的karma.conf.js配置
,这样它就可以启动Chrome实例,而开发工具会监听9333
端口,如下所示:
浏览器:[
“窃听”
],
自定义启动器:{
镀铬窃听:{
基地:'铬',
标志:['--远程调试端口=9333']
}
},
使用这种设置,您只需运行karma服务器(使用捕获的浏览器),然后在visual studio中开始调试
如果您想了解更多详细信息,请参阅我的教程。这里有一个更简单的配置(在
launch.json
中):
重要提示:
- 将
更改为Karma为您的测试提供服务的文件夹webRoot
- 这假设Karma正在端口9876上运行。如果不是,请相应地更改
url
- 您不需要记住在Karma的UI中点击Debug按钮,或者在附加调试器后刷新页面
- 你不需要在你的Karma配置中添加自定义启动器。您只需要确保您有
。您甚至可以设置singleRun:false
,因为VS-code将启动自己的浏览器(在无头模式下,所以您不会看到它)浏览器:[]
- 我在headless模式下运行,因为您不再需要查看浏览器,因为您可以在VS代码中进行调试
- 请注意,在启动调试器之前,您仍然需要启动Karma。您可以通过添加自动启动Karma的
来改进此配置。您需要将其配置为preLaunchTask
ng新HelloWorld
code HelloWorld
.vscode/launch.json
文件。将其内容替换为以下内容:{
//使用IntelliSense了解可能的属性。
//悬停以查看现有属性的描述。
//有关更多信息,请访问:https://go.microsoft.com/fwlink/?linkid=830387
“版本”:“0.2.0”,
“配置”:[
{
“类型”:“铬”,
“请求”:“启动”,
“名称”:“业力测试”,
“源地图”:正确,
“webRoot”:“${workspaceRoot}”,
“url”:”http://localhost:9876/debug.html",
//“runtimeArgs”:[
//“无头”
// ],
“路径映射”:{
“/”:“${workspaceRoot}”,
“/base/”:“${workspaceRoot}/”
},
“sourceMapPathOverrides”:{
"webpack:///./*“:“${webRoot}/*”,
"webpack:///src/*“:“${webRoot}/*”,
“网页包://*”:“*”,
"webpack:///./~/*“:“${webRoot}/node\u modules/*”,
“meteor://我遵循了@Awsed极好的解释[谢谢!],并且能够让事情顺利进行,但有几个值得注意的注意事项:
VSCode中似乎存在跟踪规范文件中的断点行时遇到问题的错误。即使在正确的设置之后,我也没有命中断点,因为VSCode似乎对断点所在的行感到困惑,尤其是在更改任何代码时。我找不到解决此问题的方法(即使在两次重新启动并多次重新启动VSCode之后)。我只能通过转到一个在一段时间内没有更改的测试文件来发现这一点,并且能够成功地命中断点。因此,我将断点移动到我遇到问题的文件页面中的不同位置,并能够找到它(最终)命中断点的位置
此外,我不建议运行Chrome headless,因为“停止”按钮不会终止进程,而且您在task manager中找不到它,因为它是无头的--您必须使用命令来终止它(例如);如果您不这样做,您将无法再次运行它。对于来到这里寻找角度调试karma测试的任何人,请参阅microsoft提供的。我使用的是angular/cli:“^8.3.25”
和karma:“1.3.0”“
,chrome79
,VSCode 1.43.2
和VSCode扩展在windows10上的chrome4.12.6
调试器
以前我们不需要调试那些karma单元测试。使用karma.config.js
中的以下设置。运行ng test--watch=true
就可以了
端口:9876,
颜色:对,
洛格列夫
{
"type": "chrome",
"request": "launch",
"name": "Test",
"sourceMaps": true,
"webRoot": "${workspaceRoot}/Test",
"url": "http://localhost:9876/debug.html",
"runtimeArgs": [
"--headless"
]
}