2012-05-14 4 views
11

とイベント・エミッターをスタブにはどうすればよい私は、次のスタブしようとしています:私はSinon.js

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

最初のパラメータは「完全」であるならば、私は唯一のコールバックを呼び出したいです。

私がテストしてい機能も含まれています

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

は、だから、僕は完全でエラーコールバックの両方を起動します原因を生み出すことができません。

私がサイロンを使用しない場合、私は次のように書くことでそれを偽造します。

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

をすることができますこれを含む関数のより完全な例を示しますか? –

答えて

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'); 
} 
7

あなたはyieldがそうのようwithArgsと組み合わせることによって発生する状況を絞り込むことができます...

on.withArgs('complete').yields(valueToPassToCompleteCallback); 
on.withArgs('error').yields(valueToPassToErrorCallback); 
関連する問題