为什么我的测试中所有$ document函数都未定义?

时间:2014-11-25 11:54:52

标签: angularjs unit-testing angularjs-directive karma-runner

我在AngularJS中有一个包含模块$ document。

的指令
$document.click(function (e) {});

我一直在尝试使用Karma为它编写单元测试并且它打破了测试,因为click()中不存在函数$document,也尝试使用{{1}的其他函数}喜欢$document并遇到同样的问题:

keyup()

这是使其失败的测试代码:

TypeError: undefined is not a function

为什么会失败?

1 个答案:

答案 0 :(得分:0)

这是the documentation关于$ document:

的说法
  

浏览器的window.document对象的jQuery or jqLite包装器。

如果单击该链接,您将看到jqLit​​e元素上定义的方法。其中没有click()而不是keyup()。这些方法确实存在于一个真正的jQuery对象上(参见http://api.jquery.com/category/events/),但是如果在您的JS文件列表中包含在angular.js之前的jQuery,AngularJS将只返回一个jQuery对象。