2017-09-08 2 views
0

J'ai une fonction de service qui ouvre un websocket, envoie, et traite le onMessage pour la réponse. J'utilise Jasmine pour essayer de créer un test unitaire pour cette fonction.Comment est-ce que j'utilise maquette websocket pour tester onMessage dans une fonction de service?

Je veux pouvoir appeler someService dans Jasmine et recevoir un objet promesse avec une fausse réponse msg. Quelle est la meilleure façon de le faire?

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

Répondre