gpt4 book ai didi

angular - 如何使用模拟 websocket 来测试服务功能中的 onMessage?

转载 作者:行者123 更新时间:2023-12-02 15:07:48 24 4
gpt4 key购买 nike

我有一个服务功能,可以打开一个 websocket,发送和处理 onMessage 以获取响应。我正在使用 Jasmine 尝试为此功能创建单元测试。

我希望能够在 Jasmine 中调用 someService 并接收带有虚假响应消息的 promise 对象。执行此操作的最佳方法是什么?

   callbacks = [];
self.someService= function(){
// Generate message
var msg = "someMsg";

// Create promise
var deferred = $q.defer();
callbacks[id] = deferred;

// Open Socket
var ws = $websocket("SomeConnectionPoint");

// Send request
ws.send(JSON.stringify(msg));

// Message Return
ws.onMessage(function(msg){
var data = JSON.parse(msg.data);

if (angular.isDefined(callbacks[id])) {
var callback = callbacks[id];
delete callbacks[id];
callback.resolve(msg);
ws.close();
} else {
console.error("Unhandled message", data);
}
});
return deferred.promise.then(function(response) {
return response;
});
};

最佳答案

我建议您先看一下 angular-websocket 测试 https://github.com/AngularClass/angular-websocket/blob/master/test/angular-websocket.spec.js他们还使用 Jasmine 来测试他们自己的库。

然后阅读 lib 文档中的 $websocketBackend 服务 - https://github.com/PatrickJS/angular-websocket您可以使用它为您的代码编写单元测试

关于angular - 如何使用模拟 websocket 来测试服务功能中的 onMessage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46125060/

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