如何让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);
});
});
答案 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下载