私はWebSocketを開き、応答のためにonMessageを送信し、処理するサービス関数を持っています。私はJasmineを使用して、この関数の単体テストを作成しようとしています。サービス機能内でonMessageをテストするためにmock websocketを使用するにはどうすればよいですか?
私はJasmineでsomeServiceを呼び出し、偽の応答msgで約束オブジェクトを受け取ることができます。これを行うための最良の方法は何ですか?
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;
});
};