2016-07-28 3 views
1

Я хочу протестировать следующую функцию.sinon.js stub - Как заглушить 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)