2013-01-16 36 views
3

我在src文件夹中做了一个带有moment.js的Jasmine独立演示。Jasmine Spec Runner:堆栈跟踪失败的测试?

describe("moment.js -> diff", function() { 
    var start, end; 
    it("leap year", function() { 
     start = moment([2012, 1, 26]); 
     end = moment([2012, 2, 4]); 
     expect(end.diff(start, "days")).toEqual(7); 
    }); 
    it("winter-/summertime", function() { 
     start = moment("2012-10-28T02:00:00+02:00"); 
     end = moment("2012-10-28T03:00:00+01:00"); 
     expect(end.diff(start, "hours")).toEqual(0); 
    }); 
}); 

第二次试验预计将失败,并且它(DIFF返回1),但茉莉给出了一个堆栈跟踪,该接缝相当对我没用,除非茉莉花有错误本身:

Error: Expected 1 to equal 0. 
    at new jasmine.ExpectationResult (http://localhost/jasmine/lib/jasmine-1.3.1/jasmine.js:114:32) 
    at null.toEqual (http://localhost/jasmine/lib/jasmine-1.3.1/jasmine.js:1235:29) 
    at null.<anonymous> (http://localhost/jasmine/spec/MomentSpec.js:11:38) 
    at jasmine.Block.execute (http://localhost/jasmine/lib/jasmine-1.3.1/jasmine.js:1064:17) 
    at jasmine.Queue.next_ (http://localhost/jasmine/lib/jasmine-1.3.1/jasmine.js:2096:31) 
    at jasmine.Queue.start (http://localhost/jasmine/lib/jasmine-1.3.1/jasmine.js:2049:8) 
    at jasmine.Spec.execute (http://localhost/jasmine/lib/jasmine-1.3.1/jasmine.js:2376:14) 
    at jasmine.Queue.next_ (http://localhost/jasmine/lib/jasmine-1.3.1/jasmine.js:2096:31) 
    at onComplete (http://localhost/jasmine/lib/jasmine-1.3.1/jasmine.js:2092:18) 
    at jasmine.Spec.finish (http://localhost/jasmine/lib/jasmine-1.3.1/jasmine.js:2350:5) 

有人请指教一个单元测试新手。也许我做错了。

+2

不知道你在找什么?你有一个你的规格的行号(http://localhost/jasmine/spec/MomentSpec.js:11:38)'这应该是足够的,在这种情况下,不应该是? – zbynour

回答

3

如果在it()块中有多个expect(),堆栈跟踪会告诉您哪个expect()函数失败。

作为@zbynour提到,你必须去你的行11,字符38,在你的MomentSpec.js找出!

+1

应该更清楚地表达出我的担忧:从其他测试框架中,我习惯于列出一个简单的结果列表。茉莉花给我10行指向茉莉花源代码。我只是不确定为什么发生这种情况,因为它对我来说似乎完全没有用处。我甚至怀疑在Jasmine中造成了错误。所以你可以选择一个答案:(A)这是茉莉花的工作原理。不关心它。 (B)这在大多数情况下是有价值的信息。 (C)你以某种方式在Jasmine中造成错误。 – user414873

+0

是的,我同意,只要说出它失败的地方以及哪条线就更好了,但我猜他们只是决定抛出堆栈转储,而不是预期的东西 –