如何使用Sinon.js存根事件发射器

时间:2012-05-14 17:23:27

标签: javascript mocking stub sinon

我试图将以下内容存根:

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

如果第一个参数是'complete',我只想调用回调。

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

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

所以我不能只做导致触发完整和错误回调的导致。

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

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

2 个答案:

答案 0 :(得分:7)

您可以通过将yieldwithArgs结合起来缩小发生on.withArgs('complete').yields(valueToPassToCompleteCallback); on.withArgs('error').yields(valueToPassToErrorCallback); 的情况......

        For Each cp As String In Me.ContentPlaceHolders
            For Each ctl As Control In Me.FindControl(cp).Controls
                If adminonly.Contains(ctl.ID) Then
                    ctl.Visible = False
                End If
            Next
        Next

答案 1 :(得分: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');
}