gpt4 book ai didi

javascript - 使用 Jasmine 测试 Web 套接字

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:16:10 25 4
gpt4 key购买 nike

这是一些使用 stomp 协议(protocol)为 web-socket 编写的代码。

function WS(url) {
var ws = new SockJS('/notifications');

this.client = Stomp.over(ws),

this.client.connect('', '', function() {
console.log('Connected');
}, function(error) {
console.log('STOMP protocol error: ', error.headers.message);
});
}

WS.prototype.disconnect = function() {
};

WS.prototype.subscribe = function() {
};

WS.prototype.unSubscribe = function() {
};

WS.prototype.send = function(msg) {
};

我找到了这篇文章,但它需要实际连接到服务器, Unit testing Node.js and WebSockets (Socket.io)

我们如何使用 Jasmine 对此进行测试。寻找一种伪造网络套接字服务器和触发事件(连接、断开连接等)的方法。我将不胜感激任何示例或有用的链接。

最佳答案

只需模拟函数的所有依赖项,因此在您的情况下,这将是 SockJSStomp.over

var wsSpy = jasmine.createSpy();
spyOn(window, 'SockJs').andReturn(wsSpy);

var clientSpy = jasmine.createSpy();
spyOne(Stomp, 'over').andReturn(clientSpy)

运行脚本后,您可以测试调用它们的 spy 。要运行回调函数,您可以使用 mostRecentCall.args 找到它们并在测试中调用它们:

var successCallBack = clientSpy.mostRecentCall.args[2];
successCallBack();

var errorCallBack = clientSpy.mostRecentCall.args[3];
errorCallBack();

关于javascript - 使用 Jasmine 测试 Web 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18715159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com