Javascript 以编程方式单击<;A>;来自AngularJS指令中的单元测试
我有以下AngularJS指令工作正常:Javascript 以编程方式单击<;A>;来自AngularJS指令中的单元测试,javascript,angularjs,unit-testing,angularjs-directive,Javascript,Angularjs,Unit Testing,Angularjs Directive,我有以下AngularJS指令工作正常: angular.module('kerrb.components').directive('krbMinimalizeSidebar', krbMinimalizeSidebar); function krbMinimalizeSidebar($timeout) { return { // restricted to use as an attribute only restrict: 'A', template: '<a class
angular.module('kerrb.components').directive('krbMinimalizeSidebar', krbMinimalizeSidebar);
function krbMinimalizeSidebar($timeout) {
return {
// restricted to use as an attribute only
restrict: 'A',
template: '<a class="navbar-minimalize minimalize-styl-2 btn btn-primary "
href="" ng-click="minimalize()"><i class="fa fa-bars"></i></a>',
controller: ['$scope', '$element', function ($scope, $element) {
$scope.minimalize = function () {
// snipped for brevity
};
}]
};
}
krbMinimalizeSidebar.$inject = ['$timeout'];
以及控制台上的输出:
': 1'
': <a class="navbar-minimalize minimalize-styl-2 btn btn-primary " href="" ng-click="minimalize()"><i class="fa fa-bars"></i></a>'
': A'
TypeError: 'undefined' is not a function (evaluating 'anchor[0].click()')
”:1
': '
“:A”
TypeError:“undefined”不是函数(正在计算“锚点[0]。单击()”)
一切似乎都是正确的。。。为什么click()不能在DOM元素上工作?Angular的元素实现没有click()函数。(请参阅。)相反,您有两个选项:
triggerHandler('click')
而不是click()
。triggerHandler
函数调用指定事件的所有侦听器。就你而言:
anchor[0]。triggerHandler('click')
…应调用ng click处理程序对jQuery的良好访问。。。我没有用它,但它的一部分工作。“triggerHandler(“”)”是我所需要的,因为即使使用jQuery也不能做到这一点。试图让我的存根工作,所以现在我可以测试函数是否被调用。我在函数中添加了一个Console.Log(),可以看到它正在被调用,但是我的存根没有捕获它。我会继续挖下去。。。
': 1'
': <a class="navbar-minimalize minimalize-styl-2 btn btn-primary " href="" ng-click="minimalize()"><i class="fa fa-bars"></i></a>'
': A'
TypeError: 'undefined' is not a function (evaluating 'anchor[0].click()')