Javascript 量角器:模拟事件源
是否有任何方法可以远程模拟量角器测试中的任何SSE(服务器发送事件) 这意味着模拟Javascript 量角器:模拟事件源,javascript,angularjs,protractor,Javascript,Angularjs,Protractor,是否有任何方法可以远程模拟量角器测试中的任何SSE(服务器发送事件) 这意味着模拟EventSource 角度控制器: angular.module('app').controller('HomeController', function() { var monitoringEvents = new window.EventSource('/streams/jobserveur'); monitoringEvents.addEventListener('monitoring-even
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);
...
});
});
感谢您提供我所提到的解决方案(角度模块/量角器ADDMOCK模块)模拟
事件源的任何见解
外部化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
模块在任何情况下都是健壮的,但您可以理解
希望它能帮助任何人
干杯你能展示一些需要模仿的代码吗?(或者一些您尝试过但不起作用的代码?)我在引用EventSource的地方添加了控制器代码。我几乎不知道我怎么能嘲笑这件事。也许我可以将EventSource
封装到一个角度模块中,并在测试中使用AddMockModule
。。。