如何在angular指令中模拟元素

时间:2014-02-24 11:17:15

标签: angularjs unit-testing angularjs-directive

我有一个非常简单的指令:

angular.module('myModule',[]).directive('myInputAutofocus', function () {

  return {
    restrict: 'A',
    link: function (scope, element) {            
      element.focus();
    }
  };
});

我该如何测试这个?我找不到模拟元素

的方法

编辑:我做了一个解释我问题的小提琴:http://jsfiddle.net/8qBbR/

2 个答案:

答案 0 :(得分:4)

您可以查看angular ui test their jQuery Passthru directive

的方式
  spyOn(jQuery.fn, 'foo');

  compile('<div ui-jq="foo"></div>')(scope);

  timeout.flush();
  expect(jQuery.fn.foo).toHaveBeenCalled();

答案 1 :(得分:3)

您可以使用$ compile提供原始HTML来测试您的指令。

您的测试设置如下所示:

var scope = $rootScope.$new(); 
var element = $compile('<div my-input-auto-focus=""></div>')(scope);

您还可以使用angular.element('<div...');

“准备”元素