2017-09-08 1 views
0

私は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; 
      }); 
     }; 

答えて

6

私は、彼らはまた、彼らはlibが所有してテストするためにジャスミンを使用https://github.com/AngularClass/angular-websocket/blob/master/test/angular-websocket.spec.js第1の角度-のWebSocketのテストを見てみることをお勧めしたいです。

その後のlibのドキュメントでは約$ websocketBackend serivceを読む - https://angularclass.github.io/angular-websocket/あなたのコードの中にユニットテストを書くためにそれを使用することができます

関連する問題