在nodejs函数中测试回调

Testing callback passing in nodejs function

本文关键字:测试 回调 函数 nodejs      更新时间:2023-09-26

通过下面的代码示例,我想知道。

function testMe( input, callback ) {
  
    callback = callback || function () {};  /* 1 */
  
    // process input ...
    process( input, function (err, result ) { 
        if( err ) {
            return callback( new Error('fail processing input') ); /* 2 */
        }
        return callback( null, result ); /* 3 */
    });
}

  1. 我如何用SinonJS测试callback的以上3个位置?

  2. 这是一个很好的做法,我重置回调在位置1?

感谢您的评论

这是一个很好的做法,我重置回调在位置1?

在您的例子中,不是,它是一个反模式。看看testMe函数的语义,它被设计为接受输入并返回输出或错误。将回调设为可选只会掩盖错误,延迟bug检测,并使调试变得更加难以解决。如果调用者根本不需要输出,为什么要调用这个函数呢?默认回调函数实际上并没有帮助,因为好的程序流程和语义无法通过没有回调而获得的"即开即弃"/"仅副作用"行为来实现。

Aside:您的示例实际上没有任何异步行为。如果您的实际代码实际上是这样的,那么它可以同步返回并同步抛出错误——在这种情况下,回调是不必要的,也不是正确的。但我怀疑你已经"简化"了你的例子,但你的实际代码实际上是异步的。