如何使用Testacular(Karma)调试Jasmine规范运行?

时间:2013-01-19 08:13:04

标签: javascript jasmine karma-runner

我有一个关于Jasmine规范的小项目,我使用Testacular作为我的测试运行员。 我不明白我如何调试应用程序代码或规范代码。当我尝试在Chrome开发工具中设置断点时,下次运行规范时不会触发该断点,因为它每次都会使用新的查询字符串加载文件。

到目前为止,我发现的最好的事情是使用console.log(),但我宁愿使用Chrome Dev Tools断点。

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

由于

3 个答案:

答案 0 :(得分:13)

Testacular不是用于调试的最佳工具。它的强大之处在于它将在多个浏览器中运行您的测试,并且可以非常快速地完成,并且每次更改文件时都可以执行此操作,因此它会告诉您是否已经破坏了测试。但是如果你需要调试,它不是最好的工具。

您确实可以在代码中放置一个“调试器”语句以使其中断,但如果这是一个在多个命中的常见代码行,您最终可能会在测试中遇到相同的断点数十次或更多次试验。也许它只是在一个给定的场景中打破,所以你必须跳过所有断点,除了你遇到问题的那一个。如果您使用的是mocha或jasmine,则可以在整个测试套件中仅运行一个测试。随着jasmine将一个测试从it()更改为iit(),使用mocha,它就是it.only()。但即便如此,对于这项工作来说,谴责仍然是错误的工具。

更好的解决方案是使用不同的测试“设置”,然后运行正在破坏的单个测试。使用jasmine或mocha或任何您选择的测试框架都可以轻松完成。您已经在其中一个框架中编写了测试版本,因为testacular是一个自动化工具而不是测试框架。所以只需创建一个测试运行器文件并使用它,加载文件,如果你正在使用chrome,进入开发工具,点击MAC上的Command-O或Windows上的Control-O,然后选择你想要的文件把断点放进去,然后设定你的断点,然后用煤气做饭。

在您的测试框架中使用传统的“测试运行器”不会与使用testacular相冲突。两人将愉快地齐心协力。

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

jasmine:http://net.tutsplus.com/tutorials/javascript-ajax/testing-your-javascript-with-jasmine/

QUnit:http://www.testdrivenjs.com/getting-started/qunit-setup/

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

答案 1 :(得分:6)

您可以单独使用语句debugger;,只要开发人员工具面板处于打开状态并且启用了断点,Chrome就会在该语句中中断。

答案 2 :(得分:4)

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

我像这样启动Karma:

karma start karma.conf.js --browsers=Chrome --single-run=false --reporters=kjhtml

这将在调试模式下打开Karma,并带有“Debug”按钮。单击该按钮后,它会在Chrome窗口中运行所有测试并显示结果。此时,您可以正常使用开发人员工具,设置断点,步入代码等。

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

为了看到这一点,这里是一个GitHub拉取请求,我将这个库添加到我们的项目中:

https://github.com/edx/edx-ui-toolkit/pull/12