2016-06-28 64 views
0

是否有远程任何方式来模拟量角器测试中的任何SSE(服务器发送事件)?量角器:嘲讽EventSource

这意味着嘲笑EventSource

角控制器:

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

谢谢你的任何洞察

+2

你能表现出一定的代码,其中将需要的嘲讽? (或者你尝试过的一些代码并没有工作?) – acdcjunior

+0

我添加了引用EventSource的控制器代码。 我对于如何嘲笑这件事情一无所知。也许我可以将'EventSource'封装到Angular模块中,并在测试中使用'AddMockModule' ... – nastyklad

回答

0

我管理由我mentionned溶液(角模块/量角器addMockModule)嘲笑EventSource

  1. 外部化EventSource呼叫到专用角模块

    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. 引用模块中的应用

    angular.module('app', ['app.sse', ...]) 
    
  3. 使用$sse模块中的应用

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

    从这里,请确保您的应用程序移动到测试

  4. 嘲笑app.sse模块在测试

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

    之前还是工作,你就大功告成了!很明显,这两种方法在这里都没有实现,反正它也是app.sse模块,但你得到的图片。

希望它可以帮助任何人

干杯