使用Resharper和Phantom JS调试Jasmine测试

9
之前已经有类似的问题被提出了,链接在这里How do you debug Jasmine tests with Resharper?,但是这里给出的建议(在测试代码中放置 debugger;)对我不起作用。每次运行测试时,都会打开一个新的浏览器窗口并跳转到调试器。是否有任何方法使它正常工作?另外,是否有任何方法可以使用 phantom runner 和 Resharper 调试 jasmine 测试?
谢谢!

你尝试过我的替代方案吗?在浏览器中进行调试。不过不知道怎么用phantom进行调试。 - Torbjörn Nomell
嗨,Torbjörn,是的,那确实有效!您可以将此评论添加为答案,以便我可以标记它) - Voice
3个回答

12

要在浏览器中进行调试,请将以下代码添加到您的JS测试文件中。

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

Resharper不会收到测试完成的通知,所以我们可以在已打开的浏览器(我使用Chrome)中设置调试断点并按F5刷新页面。

当你完成时,请在Resharper测试运行器窗口中停止测试。

编辑:
自Jasmine 2.0以来,您需要使用:

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

1
这很酷,但答案适用于Chrome而不是PhantomJS。 - zumalifeguard
此外,如果测试在TypeScript文件中,访问ReSharperReporter全局变量时会出现错误。一个解决方法是使用以下语法:window['ReSharperReporter'].prototype.jasmineDone = function () { }; - zumalifeguard
非常感谢,我希望几个月前我能找到这个,那时我花了好几天时间来解决它。 - Ibrahim ben Salah

1

Jason的回答非常有帮助。但我想补充一点,您需要在IE中启用脚本调试:Internet选项 ->高级 ->取消选中“禁用脚本调试(Internet Explorer)”。
然后您可以在您的js中放置debugger,它将引发“Visual Studio即时调试器”弹出窗口。


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

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