首先,我试图第二次测试被调用的函数返回正确的值。更具体地说,我试图第二次测试socket.on()返回正确的值。如何测试使用sinon.spy调用socket.io事件
我知道Sinon.spy()可以检测一个函数是否被调用。但它似乎不适用于socket.io事件。
我想试验中,例如
var socketio = io.connect(someUrl);
socketio.on(eventName, cb);
如果 'eventName的' 之称。我试过
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