私はディレクティブから$ 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出力( '' と呼ばれる)はカルマによってプリントアウトされ、だから私はユニットテストのブロードキャストイベントが動作すると思います。
$ emitは放送していないが、アップしている場合はどうすればそれを捕まえることができますか?もしそうでなければ、どうすればこのケースを処理できますか?
あなたは '$ rootScope'を監視し、' $ scope'に対して '$ emit'を呼び出しています。 –