如何在javascript中存根web套接字(仅提供类似事件发射器的对象)

如何在javascript中存根web套接字(仅提供类似事件发射器的对象),javascript,testing,websocket,mocking,stub,Javascript,Testing,Websocket,Mocking,Stub,我正在寻找在建立套接字连接时插入自定义事件发射器的最简单方法。我意识到这可以通过sinon实现(如下所示) 理想情况下,我正在寻找一个真正的“黑盒子”存根,它对底层技术一无所知。我使用一个名为today for xhrs的简单库来实现这一点,它允许我插入“当通过http GET请求此url时返回此json”。如果我决定从jQuery$.ajax切换到其他xhr库,则不需要进行测试返工,因为我编写它们时不考虑技术 我正在为WebSocket寻找相同的“不可知连接存根”——是否存在类似的东西?或者像

我正在寻找在建立套接字连接时插入自定义事件发射器的最简单方法。我意识到这可以通过sinon实现(如下所示)

理想情况下,我正在寻找一个真正的“黑盒子”存根,它对底层技术一无所知。我使用一个名为today for xhrs的简单库来实现这一点,它允许我插入“当通过http GET请求此url时返回此json”。如果我决定从jQuery$.ajax切换到其他xhr库,则不需要进行测试返工,因为我编写它们时不考虑技术

我正在为WebSocket寻找相同的“不可知连接存根”——是否存在类似的东西?或者像sinon这样的完整存根/间谍/模拟库是今天唯一值得一看的方法吗


我正沿着window.WebSocket的一个简单的猴子补丁的道路前进。我只是想看看其他人是否有这样的运气。

你最终做了什么?目前我还没有一个很好的“高级xhr存根”解决方案-为了解决这个问题,我最终对我使用的服务进行了猴子补丁(仍然不完美,但它在代码中提供了一个可伪造的位置)
var socket = new io.EventEmitter();
sinon.stub(io, 'connect').returns(socket);
// initialization that causes io.connect to be invoked
socket.emit('connect');