Angular: Wie man $ element.on ausspioniert

Ich habe eine Anweisung, die in ihremlink function

angular.module('myApp')
    .directive('barFoo', function() {
        return {
            restrict: 'E',
            link: function (scope, element) {
                element.on('click', ....);
            }
        };
    });

Nun möchte ich in meinem Unit-Test bestätigen, dass er @ aufruon richtig

element = angular.element('<bar-foo></bar-foo>');
$compile(element)(scope);
spyOn(element, 'on');
...
expect(element.on).toHaveBeenCalled();

s sagt mir, dass der Spion nicht gerufen wird. Von dem, was ich im Web gefunden habe, erstellt angle / jquery jedes Mal einen neuen Wrapper um das DOM-Element. Das heißt daselement in meiner Direktive ist nicht dasselbe wie das Element in meiner Spezifikationsdatei. Höchstwahrscheinlich (nicht überprüft) daselement[0] sind wohl gleich. Ich habe auch versucht, @ auszuspionierangular.element

var mockEl = { on: angular.noop };
spyOn(angular, 'element').andReturn(mockEl);
spyOn(mockEl, 'on');

aber das scheint mehr zu brechen als es behebt (ich brauche auch Funktionen wieisloateScope zum Beispiel)

Anyway, gibt es eine einfache Möglichkeit, das @ auszuspioniereon Funktion des Elements, das in einer Direktive verwendet wird?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage