使用Resharper 7测试运行器进行Jasmine测试的堆栈跟踪

时间:2012-06-28 12:47:41

标签: unit-testing resharper jasmine

如何让Resharper 7测试运行器显示Jasmine测试的堆栈跟踪。

我的设置是Resharper 7(内置Jasmine)testrunner和PhantomJs。执行任何失败的测试时,错误消息始终以:

结束
Exception doesn't have a stacktrace

在1.6“Lavender”版本的Phantom中添加了在发生错误时打印堆栈跟踪的功能。

要复制它,只需创建一个mytest.js文件并将以下代码添加到其中:

describe("A suite", function() {
  it("contains spec with an expectation", function() {
    expect(true).toBe(false);
  });
});

3 个答案:

答案 0 :(得分:7)

抱歉,我不使用Resharper,但我曾经面对与phantomjs和jasmine ConsoleReporter相同的问题。

我认为这归结为茉莉花没有为失败的期望抛出错误消息,并且只有在实际抛出错误时才会被phantomjs捕获(jasmine.js):

jasmine.ExpectationResult = function(params) {
...
var trace = (params.trace || new Error(this.message));
};

按如下所示更改该行为我修复了它:

var err;
try { throw new Error(this.message); } catch(e) { err = e };
var trace = (params.trace || err);

答案 1 :(得分:5)

在spec文件中,您进行了javascript(jasmine)单元测试,需要引用正在测试的源。 通常你在SpecRunner.html中有这个,但是Resharper推出了它自己的SpecRunner。

将此参考行添加到XyzSpec.js文件的顶部

/// <reference path="/js/path-goes-here/your-file-here.js" />

describe("Utils", function () {
    describe("when calculating quantity", function() {
...

在我开始环顾Resharper的规格赛跑者之前,几乎疯了我。

PS:如果出现新问题,单元测试运行器无法加载测试组件&#39;并且您将Chrome作为默认浏览器,在Resharper选项中更改javascript单元测试的浏览器。

答案 2 :(得分:3)

当我记录问题时,Jetbrains Resharper团队得到了很好的回应。他们修复了它,它在Resharper的7.1版本中,可以从他们的EAP site下载