我有一个 Jasmine 规格的小项目,我使用 Testacular 作为我的测试运行器。我不明白如何调试应用程序代码或规范代码。当我尝试在 Chrome 开发工具中设置断点时,它不会在下次运行规范时被命中,因为它每次都使用新的查询字符串加载文件。
到目前为止,我发现最好的方法是使用 console.log(),但我更愿意使用 Chrome 开发工具断点。
(我正在使用 Visual Studio 2012 进行开发。)
谢谢
我有一个 Jasmine 规格的小项目,我使用 Testacular 作为我的测试运行器。我不明白如何调试应用程序代码或规范代码。当我尝试在 Chrome 开发工具中设置断点时,它不会在下次运行规范时被命中,因为它每次都使用新的查询字符串加载文件。
到目前为止,我发现最好的方法是使用 console.log(),但我更愿意使用 Chrome 开发工具断点。
(我正在使用 Visual Studio 2012 进行开发。)
谢谢
Testacular 不是用于调试的最佳工具。它的强大之处在于它可以在多个浏览器中运行您的测试,并且执行速度非常快,并且可以在您每次更改文件时执行此操作,因此它会告诉您是否破坏了测试。但是如果你需要调试,它不是最好的工具。
您确实可以在您的代码中放置一个“调试器”语句以使其中断,但如果这是在多个测试中命中的常见代码行,您最终可能会在测试中多次或多次命中相同的断点。也许它只在一个给定的场景中中断,所以你必须跳过所有断点,除了你看到问题的那一次。如果您使用的是 mocha 或 jasmine,有一种方法可以在整个测试套件中只运行一个测试。使用 jasmine 将测试从 it() 更改为 iit(),使用 mocha 就是 it.only()。但即便如此,睾丸仍然是这项工作的错误工具。
一个更好的解决方案是使用不同的测试“设置”并只运行正在破坏的单个测试。这很容易使用 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/
摩卡:我没有链接到一个好文章的链接。到 2013 年 2 月中旬,我的 PluralSight,com 测试客户端 JavaScript 课程将发布,您可以在那里找到它,以及设置 QUnit 和 Jasmine 的详细说明。他们有一个简短的免费试用版,您可以使用它来查看内容而无需付费。此 URL 将在该课程发布时链接到该课程。 http://pluralsight.com/training/Authors/Details/joe-eames
您可以单独使用该语句debugger;
,只要开发人员工具面板打开并启用断点,Chrome 就会中断该语句。
我最喜欢使用 Karma(是 Testacular)调试测试的方法是使用这个插件:
我像这样启动 Karma:
karma start karma.conf.js --browsers=Chrome --single-run=false --reporters=kjhtml
这将使用“调试”按钮以调试模式打开 Karma。当您单击它时,它会在 Chrome 窗口中运行所有测试,并在经过时显示结果。此时,您可以正常使用开发人员工具、设置断点、单步执行代码等。
更好的是,您可以单击失败的测试,它将切换到只运行该测试的模式。现在,您可以快速测试和调试该一项测试,而无需等待所有其他测试运行。
要查看实际情况,这是一个 GitHub 拉取请求,我在其中将此库添加到我们的项目中: