是否有任何方法可以从量角器测试中模拟任何SSE(服务器发送事件)?
这意味着嘲笑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);
...
});
});
感谢您的任何见解
答案 0 :(得分:0)
我设法通过我提到的解决方案(角度模块/量角器addMockModule)来模拟EventSource
。
将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);
}
});
在应用程序中引用该模块
angular.module('app', ['app.sse', ...])
使用应用中的$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);
}
}]);
从这里开始,确保您的应用在进入测试之前仍然有效
模拟测试中的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
模块无论如何都是健壮的,但你得到的是。
希望它可以帮助任何人
干杯