Я пытаюсь шпионить за $emit из директивы, но почему-то я не могу заставить шпиона "слышать" $emit.
Это код в контроллере моих директив:
$scope.$on('send', function () {
console.log('called');
$scope.$emit('resultSend', {'ok': true, 'data': ''});
});
Это мой unit test:
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');
});
Выход console.log('called') печатается кармой, поэтому я предполагаю, что широковещательное событие unit test работает.
Это связано с тем, что $emit не транслируется вниз, но вверху, и если да, то как его поймать, а если нет, как еще я могу справиться с этим случаем?