我试图从指令中监视 $emit,但不知何故我无法让间谍“听到”$emit。
这是我的指令控制器中的代码:
$scope.$on('send', function () {
console.log('called');
$scope.$emit('resultSend', {'ok': true, 'data': ''});
});
这是我的单元测试:
var $rootScope, $compile, elm, element;
beforeEach(inject(function ($injector) {
$rootScope = $injector.get('$rootScope');
$compile = $injector.get('$compile');
elm = angular.element('<test></test>');
element = $compile(elm)($rootScope);
}));
it('should listen for the send broadcast and emit the resultSend', function () {
spyOn($rootScope, '$emit');
$rootScope.$broadcast('send');
expect($rootScope.$emit).toHaveBeenCalledWith('resultSend');
});
控制台.log 输出('调用')由 Karma 打印出来,所以我猜单元测试广播事件确实有效。
这是否与 $emit 不是向下广播而是向上广播有关,如果是,我该如何捕捉它,如果不是,我该如何处理这种情况?