Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 量角器:模拟事件源_Javascript_Angularjs_Protractor - Fatal编程技术网

Javascript 量角器:模拟事件源

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

是否有任何方法可以远程模拟量角器测试中的任何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);    
    ...
  });
});

感谢您提供我所提到的解决方案(角度模块/量角器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
    。。。