Javascript 如何使用Resharper调试Jasmine测试?

Javascript 如何使用Resharper调试Jasmine测试?,javascript,unit-testing,resharper,jasmine,Javascript,Unit Testing,Resharper,Jasmine,在VisualStudio2012中使用Resharper运行Jasmine测试时,我找不到调试(遍历)JavaScript代码的方法。我尝试使用浏览器(Chrome)运行测试,但测试运行程序会在测试运行后立即关闭端口,因此我无法在代码中设置断点。还尝试在Internet Explorer中运行并在Visual Studio中放置断点,但它不会附加到进程。我的测试有很多///引用脚本,Resharper会自动将这些脚本包含在测试运行程序中,但我不想为我要调试的每个测试手动执行这些脚本。请帮助我理

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

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

它调用任何可用的调试功能。它在IE中不工作,但在Chrome中工作得很好(你写了你使用它,所以我想这就足够调试了)


当然,在那之后,一定要删除
调试器
关键字!一般来说,在生产代码中可能没有真正简单的方法来避免它(以防您不仅在spesc中使用它),但如果您对此感兴趣,则可能会有所帮助。

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

jasmine.getEnv().currentRunner_.finishCallback = function () {};
由于Jasmine 2.0,您需要使用:

ReSharperReporter.prototype.jasmineDone = function () { };
完成后,停止resharper testrunner窗口中的测试

也可以为QUnit执行此操作

QUnit.moduleDone = function(){}
正如我在


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

我知道这是一个老问题,这个答案有点离题,但如果你不想干扰回调,Chutzpah test runner上下文菜单可以在这里支持你。在resharper/phantomjs中运行测试(这样您就不会出现选项卡爆炸),并在Chrome(或您首选的浏览器)中通过右键单击进行调试:


到目前为止,我的解决办法是不使用Resharper进行调试。执行手动工作:获取Jasmine Standalone Test Runner,并在脚本标记中包含所有引用,并包含测试本身。然后在浏览器的开发人员控制台中调试。我是否正确理解Re#runner打开浏览器,您想在浏览器中调试您的规范?@zbynour不能这样做,因为测试完成后它会立即关闭http端口。太好了,我想
debugger只是因为我以前使用过它,但不知道它也存在于Chrome中。谢谢在Chrome中,这似乎对我不起作用,因为它可以在不跳到调试器的情况下愉快地继续执行。还有其他建议吗?@mklinker对不起,响应时间太长了。。。我想到的唯一一件事是在浏览器中打开开发人员工具(因为它调用“任何可用的调试功能”,所以没有打开调试器意味着它可以在编写时愉快地继续)。但我不知道是否可以这样做(以何种方式打开浏览器)。目前我使用TestCular runner,因此很容易在捕获的浏览器中打开开发工具(因为它保持打开状态)。这不起作用,因为每次按“Run Unit Test”(运行单元测试)时,ReSharper都会打开一个新页面,并且您无法以足够快的速度点击F12以打开浏览器上的开发人员控制台。ReSharper会随机化测试服务器正在运行的端口,这样浏览器就不会记得你已经点击了F12。这不是最明显的解决方案:)而且对于Jasmine 2.0 Part来说@Kestas也值得称赞。此外,如果测试是在TypeScript文件中,那么在访问
ReSharperReporter
全局变量时会出现错误。一种解决方法是使用如下语法:
window['ReSharperReporter'].prototype.jasmineDone=function(){}
QUnit.moduleDone = function(){}