使用$ document with angular-mocks的测试指令

时间:2013-10-04 09:32:35

标签: unit-testing angularjs

我正在尝试测试一个使用angular $ document元素来附加事件处理程序的指令。但是,当我使用Jasmine和angular mocks对它进行测试时,当指令的linkfn执行时,我得到一个错误。

这样的指令:

angular.module('myDirective', []).directive('myDirective',
function () {
    function keydownHandler(ev) {
        alert('keydown');
    }
    return {
        template: '<input type="text" />',
        link: function ($scope, $document) {
            $document.on('keydown', keydownHandler);
        }
    }
});

错误:

TypeError: Object #<Object> has no method 'on'

1 个答案:

答案 0 :(得分:1)

这不起作用,因为链接功能不支持依赖注入。如关于directives的文档中所述,链接函数接受4个参数 - 范围,元素,属性和控制器。

link: function(scope, element, attributes, controller) {
  // do the linking here
}

Here是一段视频,详细介绍了这一点。