15

我正在尝试存根以下内容:

on('complete', function(data){ });

如果第一个参数是“完成”,我只想调用回调。

我正在测试的功能还包含:

on('error', function(data){ });

所以我不能只做会触发完整和错误回调的 yield 原因。

如果我不使用 sinon,我会通过编写以下内容来伪造它。

var on = function(event, callback){
  if (event === 'complete'){
    callback('foobar');
  };
};
4

2 回答 2

9

您可以通过将 a 与 a 组合来缩小 ayield发生的情况withArgs...

on.withArgs('complete').yields(valueToPassToCompleteCallback);
on.withArgs('error').yields(valueToPassToErrorCallback);
于 2015-07-24T14:57:10.913 回答
0

也许您可以使用spyCall

var spy = sinon.spy(window, 'on');
on('error', function(data){ });
on('complete', function(data){ });
for(var i=0; i < spy.callCount; i++){
    var call = spy.getCall(i);
    if(call.args[0] === 'complete') call.args[1]('foobar');
}
于 2012-05-15T20:19:47.020 回答