如何使用Resharper调试Jasmine测试?

ora*_*rad 31 javascript resharper unit-testing jasmine

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

Tor*_*ell 33

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

jasmine.getEnv().currentRunner_.finishCallback = function () {};
Run Code Online (Sandbox Code Playgroud)

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

ReSharperReporter.prototype.jasmineDone = function () { };
Run Code Online (Sandbox Code Playgroud)

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

这也可以用于QUnit

QUnit.moduleDone = function(){}
Run Code Online (Sandbox Code Playgroud)

  • 此外,如果测试是在TypeScript文件中,则访问`ReSharperReporter`全局变量时会出错.一个解决方法是使用这样的语法:`window ['ReSharperReporter'].prototype.jasmineDone = function(){};` (2认同)

zby*_*our 19

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

debugger;
Run Code Online (Sandbox Code Playgroud)

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

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

  • 这似乎并不适合我在Chrome中,因为它很高兴继续执行而不会跳转到调试器.还有其他建议吗? (3认同)
  • 由于ReSharper每按一次"运行单元测试"而打开一个新页面,并且无法快速点击F12以在浏览器上打开开发人员控制台,因此无法完成此任务.ReSharper将测试服务器运行的端口随机化,这样浏览器就不记得你已经打过F12了. (3认同)