sinon.js stub - 如何存根async.map

时间:2016-07-28 07:38:20

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

我想测试以下功能。

var myFun = function (a, b, callback) {
   async.map(a, function (b, mapCallback) {
      //Do something with b => code I don't want to execute 
      mapCallback(null, res) 
   }, 
   function (err, output) {
        if (err) {
            Logger.error(err);
            return callback(err, null);
        }
        return callback(null,  output.filter(function(n){ return n != null }));
    });
}

这里我使用的是async.map,我想要的是存根。 async.map需要3个参数,第一个数组,第二个和第三个回调。我想要存根第二个回调并使用测试值调用第三个回调。怎么做?

我试过了:

var mockAsync = sinon.stub(async, "map")
mockAsync.yields("Some error", null);

但这会执行第二个功能,而不是第三个功能,我尝试使用callsArg,但这也没有帮助,不确定这里是否相关。

1 个答案:

答案 0 :(得分:0)

Sinon docs

stub.callArg(argNum)
stub.callArgWith(argNum, [arg1, arg2, ...])

在您的上下文中应该是

mockAsync.callArgWith(1, "Some error", null)