Я пробовал следовать формату ng-directive-testing репо для директивы, которую я написал. Директива в основном создает оверлей, когда пользователь нажимает на элемент. Здесь директива (упрощенная):
mod.directive('uiCopyLinkDialog', function(){
    return {
        restrict: 'A',
        link: function(scope, element, attrs) {
            var $elm = angular.element(element);
            element.bind('click', function(event) {
                $elm.addClass('test');
            });
        }
    };
});
Тест, который я пишу, выглядит следующим образом:
describe('pre-compiled link', function () {
    beforeEach(mocks.inject(function($compile, $rootScope) {
        scope = $rootScope;
        element = angular.element('<span class="foo" ui-copy-link-dialog="url"></span>');
        $compile(element)(scope);
        scope.$digest();
    }));
    it("should change the class when clicked", function () {
        element.click(); // this returns "'undefined' is not a function"
        element[0].click(); // so does this
        $(elm).click(); // this uses jquery and doesn't *seem* to fail
        waits(500); // hack to see if it was a race condition
        expect(elm.className).toContain('test'); // always fails
    });
});
В тесте вы можете увидеть, что я пытаюсь несколько способов запуска события click() в ссылке, причем большинство из них дает ошибку undefined.
Может ли кто-нибудь сказать мне, что я здесь делаю неправильно? Читая примеры, это звучит как правильный синтаксис, но мой тестовый бегун (Karma via Grunt) не хочет играть в мяч.