2016-07-28 29 views
1

我想測試下面的函數。sinon.js存根 - 如何存根async.map

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,執行第二功能,而不是第三個功能,但也沒有幫助,不知道那是與此有關與否。

回答

0

Sinon docs

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

在你的情況下應該是

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