如何在Protractor中$ rootScope.$广播事件

Pet*_*ukh 4 testing angularjs protractor

有没有人在Protractor测试中有一个如何$ rootScope.$广播事件的工作示例?

我知道Protractor不用于此,我应该使用Karma进行单元测试.但情况是我需要在Protractor测试中广播一个事件.为此,我想要获得$ rootScope.但我不知道如何在量角器中做到这一点,经过长时间的搜索后,我在互联网上找不到答案.

我猜以下是单元测试.量角器没有注入.

var rootScope;
beforeEach(inject(function($injector) {
    rootScope = $injector.get('$rootScope');
}));

$rootScope.$broadcast("EVENT_TO_TEST", other, possible, args);
Run Code Online (Sandbox Code Playgroud)

希望解决方案存在.

flo*_*bon 6

您可以通过以下方式在浏览器中运行脚本:

browser.executeScript("
  angular.element('body').injector().get('$rootScope').$broadcast(...);
");
Run Code Online (Sandbox Code Playgroud)

或者使用不同的语法来获取根范围:

browser.executeScript("
  angular.element('body').scope().$root.$broadcast(...);
");
Run Code Online (Sandbox Code Playgroud)

您可以使用body包含范围的元素替换.