15

私は以下をスタブしようとしています:

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

最初のパラメータが「complete」の場合にのみコールバックを呼び出したい。

私がテストしている関数には、次のものも含まれています。

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

したがって、completeコールバックとエラーコールバックの両方を起動するyieldcauseを実行することはできません。

シノンを使わないのなら、次のように書いて偽造します。

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

2 に答える 2

9

のようyieldに組み合わせることで、発生する状況を絞り込むことができます。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 に答える