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

Mha*_*lin 3 resharper unit-testing jasmine

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

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

Exception doesn't have a stacktrace
Run Code Online (Sandbox Code Playgroud)

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

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

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

小智 7

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

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

jasmine.ExpectationResult = function(params) {
...
var trace = (params.trace || new Error(this.message));
};
Run Code Online (Sandbox Code Playgroud)

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

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


Dav*_*ere 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() {
...
Run Code Online (Sandbox Code Playgroud)

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

PS:如果出现新问题'单元测试运行器无法加载测试程序集'并且您将Chrome作为默认浏览器,请在Resharper选项中更改浏览器以进行javascript单元测试.