Javascript 如何调试带有TestCular(Karma)的Jasmine规范运行?

Javascript 如何调试带有TestCular(Karma)的Jasmine规范运行?,javascript,jasmine,karma-runner,Javascript,Jasmine,Karma Runner,我有一个茉莉花规格的小项目,我使用TestCular作为我的测试运行程序。 我不明白如何调试,无论是应用程序代码还是规范代码。当我尝试在Chrome Dev工具中设置断点时,下次运行规范时不会命中断点,因为每次都会用新的查询字符串加载文件 到目前为止,我发现最好的方法是使用console.log(),但我更愿意使用Chrome开发工具断点 (我正在使用Visual Studio 2012进行开发。) 谢谢您可以使用语句调试器本身,只要开发者工具面板打开且断点启用,Chrome就会在该语句上中断。

我有一个茉莉花规格的小项目,我使用TestCular作为我的测试运行程序。 我不明白如何调试,无论是应用程序代码还是规范代码。当我尝试在Chrome Dev工具中设置断点时,下次运行规范时不会命中断点,因为每次都会用新的查询字符串加载文件

到目前为止,我发现最好的方法是使用console.log(),但我更愿意使用Chrome开发工具断点

(我正在使用Visual Studio 2012进行开发。)


谢谢

您可以使用语句
调试器本身,只要开发者工具面板打开且断点启用,Chrome就会在该语句上中断。

TestCular不是用于调试的最佳工具。它的强大之处在于它可以在多个浏览器中运行您的测试,并且运行速度极快,并且可以在您每次更改文件时执行测试,因此它会告诉您是否破坏了测试。但是如果你需要调试,它不是最好的工具

您确实可以在代码中放入一个“debugger”语句以使其中断,但如果这是在多个测试中命中的一行常见代码,那么您可能会在测试中多次命中同一断点。在这种情况下,它可能只在一个给定的场景中中断,因此您必须跳过所有断点,除了您看到问题的一个断点。如果您使用的是mocha或jasmine,那么有一种方法可以在整个测试套件中只运行一个测试。对于jasmine,这将一个测试从it()更改为iit(),而对于mocha,则是it.only()。但即便如此,TestCular仍然是这项工作的错误工具

一个更好的解决方案是使用不同的测试“设置”,只运行正在中断的单个测试。使用茉莉花或摩卡咖啡或您选择的任何测试框架都可以轻松实现这一点。您已经在其中一个框架中编写了TestCular测试,因为TestCular是一个自动化工具,而不是一个测试框架。因此,只需创建一个测试运行程序文件并使用它,加载该文件,如果您使用的是chrome,则进入开发工具,在MAC上点击Command-O或在windows上点击Control-O,然后选择您希望在其中设置断点的文件,并设置断点,然后您就可以使用gas烹饪了

在测试框架中使用传统的“测试运行器”与使用TestCular完全不会冲突。这两个人将愉快地合拍

以下是我在主要3个测试框架中进行此操作的首选文章的链接:

茉莉花:

昆特:


摩卡:我没有这方面好文章的链接。到2013年2月中旬,我的PluralSight、com测试客户端JavaScript课程将发布,您可以在那里找到它,以及关于设置QUnit和Jasmine的详细说明。他们有一个简短的免费试用版,您可以使用它来查看内容,而无需付费。该URL将在该课程发布时链接到该课程

我最喜欢的使用Karma调试测试的方法(was Testacular)是使用这个插件:

我开始像这样的因果报应:

karma start karma.conf.js --browsers=Chrome --single-run=false --reporters=kjhtml
这将在调试模式下通过“调试”按钮打开Karma。当你点击它时,它会在一个Chrome窗口中运行所有测试,并在测试过程中显示结果。此时,您可以像往常一样使用开发人员工具、设置断点、单步执行代码等

更好的是,您可以单击失败的测试,它将切换到只运行该测试的模式。现在,您可以快速测试和调试一个测试,而无需等待所有其他测试运行

要看到这一点,下面是一个GitHub pull请求,我将此库添加到我们的项目中:


谢谢你的回答。您的解决方案可行,但我正在寻找一种更结构化的方法。如果没有更好的解决方案,我会把它作为答案。谢谢你的解释。对于这个项目,我可以使用
调试器
但如果未来的项目,我肯定会使用你的建议。不确定最近是否发生了变化或发生了什么,但看起来实际的报告者ID不是
html
,而是
kjhtml
(来自官方)