【问题标题】:doesNotThrow in Node.js returns undefinedNode.js 中的 doesNotThrow 返回未定义
【发布时间】:2013-07-15 14:51:19
【问题描述】:

在我的 NodeUnit 测试中,我有这样一段代码:

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

但是在调用 doesNotThrow(...) 之后 functionResult 是未定义的 为什么 test.doesNotThrow() 不返回函数调用的结果? 那会很优雅。

【问题讨论】:

    标签: node.js nodeunit


    【解决方案1】:

    它没有返回任何东西,如source code 所示,这是因为 nodeunit 依赖于AssertionError 来确定套件是否成功,如您所见here

    你为什么希望它返回一些东西,你期望什么返回值?
    该库的目的是测试您的断言。它不应该返回一个值,因为这意味着给你信息来用那个值做一些事情,相反,当一个断言抛出时,你会得到一个控制台消息,说你的测试被破坏了。我相信这是一个很好的方法。

    您的目标是在发生故障时得到通知,依靠库告诉您发生了什么故障,而不是深入细节,这就是我相信作者选择这种方式的原因。

    【讨论】:

    • 返回 undefined 严格不如返回调用 doesNotThrow(...) 的结果。
    • 那是因为这是单元测试,你在测试函数不会抛出,在另一个测试中你会测试一个结果,看看它是否符合你的期望。
    • 我想知道为什么链接断言被认为是一种不好的做法。 cf这篇文章stackoverflow.com/questions/2430429/…
    • 因为你要同时测试多个东西,所以它被称为单元测试,因为你测试单个逻辑单元,每个单元都是独立的。
    • 每次测试一个功能,不要尝试同时测试很多功能。如果这没有回答,我建议你打开一个新问题。或者,如果确实如此,请投票/标记为已接受。
    猜你喜欢
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 2016-10-26
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多