まず、呼び出されている関数が正しい値を返す2回目のテストを試みています。具体的には、socket.on()がイベントを受け取った2回目のテストを試行していますが、正しい値が返されます。sinon.spyで呼び出されているsocket.ioイベントをテストするには
Sinon.spy()は、関数が呼び出されているかどうかを検出できます。しかし、socket.ioイベントではうまくいかないようです。
'eventNameのが' と呼ばれている場合、私は
var socketio = io.connect(someUrl);
socketio.on(eventName, cb);
、例えばテストしようとしています。試しました
var spy = sinon.spy(socketio, 'on');
assert(spy.withArgs(eventName).called);
しかし、それは決して呼ばれていないと言います。
はさらに、私は、コールバック関数内のデータをテストしたい場合は、例えば
var socketio = io.connect(someUrl);
socketio.on(eventName, function(data) {
data.should.equal(something);
});
がそれをテストすることが可能です、右かないですか?
アップデート:私は、しかし、私は、これはハック方法だと思いコールバック
var count = 0;
socketio.on(eventName, function(data) {
count++;
if(count === 2) {
data.should.equal(something)
}
}
に数を追加することで問題を解決し
、それを行うための任意の標準/スマートな方法があります(もし可能ならsinonを使って)?
はにタイプミスがあり、あなたの接続の例?スパイのメソッドを持っていない 'withArg' - ' withArgs'である必要があります –
@TristanHessellごめん、それはタイプミスです – Keming