3

这是一些使用 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)

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

4

2 回答 2

8

只需模拟函数的所有依赖项,因此在您的情况下,这将是SockJSand Stomp.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();
于 2013-09-10T11:14:34.773 回答
2

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

按照 Jasmine 2.3 的新语法是:

clientSpy.calls.mostRecent().args
于 2016-01-13T01:12:43.960 回答