ディレクティブから $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');
});
console.log の出力 (「呼び出された」) は Karma によって出力されるため、単体テストのブロードキャスト イベントは機能すると思います。
これは $emit がダウンブロードキャストではなくアップに関係しているのでしょうか。