测试在nodejs函数中传递的回调

时间:2015-10-14 14:49:35

标签: javascript node.js unit-testing callback sinon

使用以下代码示例,我想知道。



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的回调是一个好习惯吗?

  3. 感谢您的评论。

1 个答案:

答案 0 :(得分:1)

  

我在1号位置重置回调是一个好习惯吗?

在你的情况下,不,这是一种反模式。查看testMe函数的语义,它旨在获取输入并使用输出或错误回调。使回调可选只会掩盖错误,延迟错误检测并使调试更加难以解决。如果调用者根本不需要输出,为什么还要先调用该函数呢?默认回调函数实际上没有帮助,因为好的程序流和语义不能用"点火和忘记" /"只有副作用"没有回调的行为。

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