使用 Jasmine 测试 Web 套接字

Testing Web Sockets with Jasmine

本文关键字:套接字 Web 测试 Jasmine 使用      更新时间:2023-09-26

这是一些使用stomp协议为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) {
};

我找到了这篇文章,但它需要实际连接到服务器,单元测试 Node.js 和 WebSockets (Socket.io)

我们如何用茉莉花来测试这一点。寻找一种伪造 Web 套接字服务器和触发事件(连接、断开连接等)的方法。我将不胜感激任何示例或有用的链接。

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

var wsSpy = jasmine.createSpy();
spyOn(window, 'SockJs').andReturn(wsSpy);
var clientSpy = jasmine.createSpy();
spyOne(Stomp, 'over').andReturn(clientSpy)

运行脚本后,您可以测试他们被调用的间谍。要运行回调函数,您可以使用mostRecentCall.args来查找它们并在测试中调用它们:

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

只是对安德烈亚斯接受答案的更新。根据 http://jasmine.github.io/2.3/introduction.html#section-31,Jasmine 中的语法发生了变化

根据 Jasmine 2.3 的新语法将是:

clientSpy.calls.mostRecent().args