2016-06-28 8 views
0

Gibt es eine Möglichkeit, eine SSE (Server Sent Event) aus einem Progractor-Test herauszuspielen?Winkelmesser: spöttisch EventSource

Das bedeutet, dass EventSource

Angular Controller spöttisch:

angular.module('app').controller('HomeController', function() { 

    var monitoringEvents = new window.EventSource('/streams/jobserveur'); 

    monitoringEvents.addEventListener('monitoring-event', function(e) { 
    var json = JSON.parse(e.data);  
    ... 
    }); 
}); 

Vielen Dank für jede Einsicht

+2

Können Sie etwas Code zeigen, wo die spöttischen benötigt hilft? (Oder ein Code, den Sie ausprobiert haben und nicht funktioniert haben?) – acdcjunior

+0

Ich habe den Controller-Code hinzugefügt, auf den die EventSource verweist. Ich habe eigentlich keine Ahnung, wie ich dieses Ding verspotten könnte. Vielleicht könnte ich die 'EventSource' in ein Angular-Modul kapseln und das' AddMockModule' im Test verwenden ... – nastyklad

Antwort

0

I EventSource durch die Lösung verspotten konnte ich erwähnt (Winkelmodul/Winkelmesser addMockModule).

  1. Externalize EventSource Anrufe in ein dediziertes Winkelmodul

    angular.module('app.sse', []) 
    .value('$sse', { 
        sources : [], 
        addEventSource : function(name, url) { 
        this.sources[name] = new window.EventSource(url); 
        }, 
        addEventListener : function(name, eventName, callback) { 
        this.sources[name].addEventListener(eventName, callback); 
        } 
    }); 
    
  2. das Modul in der app Referenzierung

    angular.module('app', ['app.sse', ...]) 
    
  3. Verwenden der $sse Modul im app

    angular.module('app').controller('HomeController', ['$sse' , function($sse) { 
        $sse.addEventSource('jobserveur', '/streams/jobserveur'); 
    
        $sse.addEventListener('jobserveur', 'monitoring-event', function(e) { 
        var js = JSON.parse(e.data); 
        } 
    }]); 
    

    Von hier aus, stellen Sie sicher Ihre Anwendung auf die Prüfung arbeiten noch

  4. Mock das app.sse Modul in Ihrem Test

    describe('SSE Fixture', function() { 
        beforeEach(function() { 
        browser.addMockModule('app.sse', function() { 
         angular.module('app.sse', []).value('$sse', { 
         addEventSource: function(name, url) { 
    
         }, 
         addEventListener: function(name, event, callback) { 
    
         } 
         }); 
        }); 
    } 
    

    Und du, bevor er fertig! Offensichtlich sind die beiden Methoden hier nicht implementiert und das Modul app.sse ist sowieso nicht robust, aber Sie erhalten das Bild.

Hoffe, es würde jemand

Prost

Verwandte Themen