2013-07-15 40 views
1

在我的測試中NodeUnit,我有這樣一段代碼:doesNotThrow在Node.js的返回undefined

exports['aTest'] = function(test){ 
... 
var functionResult = test.doesNotThrow(aFunction(aParam)); 
... 
} 

但爲什麼test.doesNotThrow functionResult被調用後未定義,doesNotThrow(...) ()不返回函數調用的結果? 這將是相當優雅。

回答

0

如圖所示source code它不返回任何東西,這是因爲nodeunit依靠AssertionError確定一套成功與否,你可以看到here

爲什麼你會希望它返回的東西,你會期望什麼樣的回報價值?
該庫的目的是測試你的斷言。它不應該返回一個值,因爲這意味着給你的信息做一些有價值的事情,相反,當一個斷言拋出時,你會得到一個控制檯消息,說你的測試被破壞了。我相信這是一個好方法。

你的目標是當有事情發生時通知你,依靠圖書館告訴你什麼壞了,不要深入細節,這就是爲什麼我相信作者選擇這種方式。

+0

返回未定義嚴格地不如返回調用didNotThrow(...)所做的結果。 – lOlive

+0

這是因爲這是單元測試,您正在測試函數不會拋出,在另一個測試中,您將測試結果並查看它是否符合您的期望。 –

+0

我想知道爲什麼鏈接斷言被認爲是不好的做法。參考這篇文章http://stackoverflow.com/questions/2430429/are-multiple-asserts-bad-in-a-unit-test-even-if-chaining – lOlive