2013-01-16 37 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

是的,我同意,只要說出它失敗的地方以及哪條線就更好了,但我猜他們只是決定拋出堆棧轉儲,而不是預期的東西 –