31

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

4

4 回答 4

33

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

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

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

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

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

这也可以为 QUnit 完成

QUnit.moduleDone = function(){}
于 2013-06-13T12:53:49.387 回答
19

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

debugger;

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

当然,在那之后一定要删除debugger关键字!也许没有真正简单的方法可以在一般的生产代码中避免它(如果您不仅会在 spesc 中使用它)但是如果您对这个 SO问题感兴趣可能会有所帮助。

于 2013-05-03T05:54:58.790 回答
1

正如我在使用 resharper 和 phantom js 调试 jasmine 测试上发布的那样

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

于 2016-02-16T17:53:34.867 回答
0

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

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

于 2017-02-03T16:25:32.977 回答