如何使用Resharper调试Jasmine测试?

31

当我在Visual Studio 2012中使用Resharper运行Jasmine测试时,我找不到调试(逐步跟踪)JavaScript代码的方法。我尝试使用浏览器(Chrome)运行测试,但是测试运行程序会在测试完成后关闭端口,因此我无法在代码中设置断点。也试过在Internet Explorer中运行,并在Visual Studio中设置断点,但它不能附加到该进程上。我的测试有很多///参考脚本,Resharper会自动包含在测试运行程序中,但我不想为我要调试的每个测试手动执行此操作。请帮助我理解这一点。如果您有一个失败的Jasmine测试,那么如何进行调试?


到目前为止,我的解决方法是不使用 Resharper 进行调试。手动完成工作:获取 Jasmine Standalone Test Runner 并在脚本标记中包含所有引用以及测试本身。然后在浏览器的开发者控制台中进行调试。 - orad
我理解的对吗,Re# Runner会打开浏览器,你想在浏览器中调试你的规范(specs)? - zbynour
@zbynour 无法这样做,因为测试完成后会关闭HTTP端口。 - orad
4个回答

33

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

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

从Jasmine 2.0开始,您需要使用:

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

当您完成测试时,请停止resharper测试运行器窗口中的测试。

同样,这也适用于QUnit。

QUnit.moduleDone = function(){}

不是最明显的解决方案 :) 同时向 @Kestas 致敬,因为他提到了 Jasmine 2.0 部分。 - Torbjörn Nomell
2
此外,如果测试在TypeScript文件中,访问ReSharperReporter全局变量时会出现错误。一个解决方法是使用以下语法:window['ReSharperReporter'].prototype.jasmineDone = function () { }; - zumalifeguard

19

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

debugger;

它调用任何可用的调试功能。在IE中不起作用,但在Chrome中运行得非常好(您写道您使用它,所以我想仅用于调试足够了)。

当然,在此之后,请务必删除debugger关键字!也许没有真正简单的方法来避免在生产代码中通常使用它(如果您不仅在spesc中使用它),但如果您对此感兴趣,SO问题可能会有所帮助。


1
太好了,我以为 debugger; 只在 IE 中支持,因为我以前使用过,但不知道它也存在于 Chrome 中。谢谢! - orad
3
在Chrome浏览器中,这似乎对我无效,因为它会在没有跳转到调试器的情况下继续执行。还有其他建议吗? - Matt Klinker
1
@mklinker 对于我回复时间太长,请原谅... 我想到的唯一方法是在浏览器中打开开发者工具(因为它会调用“任何可用的调试功能”,所以没有打开调试器意味着它会像你写的那样愉快地继续运行)。但我不知道是否可能这样做(以哪种方式打开浏览器)。目前我使用Testacular runner,所以很容易在捕获的浏览器中打开dev工具(因为它保持打开状态)。 - zbynour
3
由于ReSharper在每次按下“运行单元测试”时都会打开一个新页面,你无法快速按下F12来打开浏览器的开发者控制台,因此这样做行不通。而且,ReSharper会随机分配测试服务器运行的端口,因此浏览器无法记住您已经按下了F12。 - Marcel

1

我在使用Resharper和Phantom JS调试jasmine测试的帖子中提到了这个问题。

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


0

我知道这是一个老问题,而且这个答案略微偏题,但如果你不想干扰回调Chutzpah测试运行器上下文菜单,可以在这里支持你。在resharper/phantomjs中运行测试(这样你就不会得到标签爆炸),并在Chrome(或您喜欢的浏览器)中调试,右键单击即可:

Chutzpah测试运行器上下文菜单扩展


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接