2013-07-15 39 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