如何使用Resharper调试Jasmine测试?

时间:2013-04-25 18:30:58

标签: javascript unit-testing resharper jasmine

在Visual Studio 2012中使用Resharper运行Jasmine测试时,我无法找到调试(遍历)JavaScript代码的方法。我尝试使用浏览器(Chrome)运行测试,但测试运行器会在测试后立即关闭端口运行,因此我不能在代码中放置断点。还尝试在Internet Explorer中运行并在Visual Studio中放置断点,但它不会附加到进程。我的测试有很多///参考脚本,Resharper自动包含在测试运行器中,但我不想为我想要调试的每个测试手动执行此操作。请帮我理解这个。如果您的茉莉花测试失败,那么您如何调试呢?

4 个答案:

答案 0 :(得分:33)

由于我没有debugger;工作,我找到了另一个解决方案。 通过在我的测试中添加以下内容,将不会通知resharper测试已完成,因此我们可以在打开的浏览器中设置调试断点(我使用chrome)并更新(F5)页面。

jasmine.getEnv().currentRunner_.finishCallback = function () {};

由于Jasmine 2.0你需要使用:

ReSharperReporter.prototype.jasmineDone = function () { };

完成后,在resharper testrunner窗口中停止测试。

这也可以用于QUnit

QUnit.moduleDone = function(){}

答案 1 :(得分:18)

尝试使用debugger关键字。只需将以下行添加到您要调试的代码中(可能在规范中):

debugger;

它调用任何可用的调试功能。它在IE中不起作用,但在Chrome中工作得很好(你写过你使用它,所以我猜它只是用于调试)。

当然,在此之后一定要删除debugger关键字!也许在生产代码中通常没有非常简单的方法来避免它(如果你不仅仅在spesc中使用它),但如果你对此感兴趣,那么SO question可能会有所帮助。

答案 2 :(得分:1)

我发布在Debugging jasmine tests with resharper and phantom js

我得到了调试器;通过在ReSharper选项中将IE 11设置为我的测试浏览器来工作。很酷的是,您可以在Visual Studio版本的代码中设置断点,并使用Visual Studio进行设置和调试。您真的不需要与浏览器进行交互。

答案 3 :(得分:0)

我知道这是一个老问题,这个答案稍微偏离主题,但如果你不想干扰回调,Chutzpah测试跑步者上下文菜单可以在这里支持你。在resharper / phantomjs中运行测试(这样你就不会爆炸标签爆炸)并在Chrome(或你首选的浏览器)中调试并点击右键:

Chutzpah Test Runner Context Menu Extension