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

How do I debug a Jasmine spec run with Testacular (Karma)?

本文关键字:运行 规范 Karma Jasmine 何调试 调试 Testacular      更新时间:2023-09-26

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

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

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

谢谢

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

您确实可以在代码中放入一个"调试器"语句来导致它中断,但是如果同一行代码在多个测试中被击中,那么您最终可能会在测试中几十次或更多次遇到相同的断点。它可能只在一个给定的场景中中断,所以您必须跳过所有的断点,除了您看到问题的那个断点。如果您使用的是mocha或jasmine,那么有一种方法可以在整个测试套件中只运行一个测试。对于jasmine,它将一个测试从it()更改为iit(),对于摩卡,它是it.only()。但即便如此,testular仍然不适合这项工作。

一个更好的解决方案是使用一个不同的测试"设置",只运行一个失败的测试。这很容易使用jasmine或mocha或任何您选择的测试框架来完成。因为testacular是一个自动化工具,而不是一个测试框架,所以您已经在其中一个框架中编写了testacular测试。所以,只要创建一个测试运行器文件,并使用它,加载文件,如果你使用chrome浏览器,进入开发工具,在MAC上按Command-O或在windows上按Control-O,选择你想要放置断点的文件,并设置断点,然后你正在与燃气烹饪。

在测试框架中使用传统的"测试运行器"不会与使用testacular发生冲突。两人将会愉快地一起奔跑。

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

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

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

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

你可以单独使用debugger;语句,只要开发者工具面板打开并启用断点,Chrome就会在该语句上中断。

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

  • https://github.com/dfederm/karma-jasmine-html-reporter

我这样启动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