Ins*_*nct 1 unit-testing websocket jasmine karma-jasmine angular
我有一个服务函数,它打开一个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;
});
};
Run Code Online (Sandbox Code Playgroud)
我建议你先看一下angular-websocket测试https://github.com/AngularClass/angular-websocket/blob/master/test/angular-websocket.spec.js他们也用Jasmine来测试他们自己库.
然后阅读lib中的文档有关websocketBackend $ serivce - https://angularclass.github.io/angular-websocket/你可以用它来写在你的代码的单元测试
| 归档时间: |
|
| 查看次数: |
1297 次 |
| 最近记录: |