У меня есть следующая директива AngularJS, которая создает элемент input
. Вход имеет атрибут ng-change
, который выполняет функцию doIt()
. В моей директиве unit test я хочу проверить, вызывается ли функция doIt
, когда пользователи меняют ввод. Но тест не проходит. Хотя он работает в браузере при проверке вручную.
Директива
...
template: "<input ng-model='myModel' ng-change='doIt()' type='text'>"
Тест:
el.find('input').trigger('change') // Dos not trigger ng-change
Live demo (ng-change): http://plnkr.co/edit/0yaUP6IQk7EIneRmphbW?p=preview
Теперь тест проходит, если я вручную привязываю событие change
вместо использования атрибута ng-change
.
template: "<input ng-model='myModel' type='text'>",
link: function(scope, element, attrs) {
element.bind('change', function(event) {
scope.doIt();
});
}
Живая демонстрация (ручная привязка): http://plnkr.co/edit/dizuRaTFn4Ay1t41jL1K?p=preview
Есть ли способ использовать ng-change
и сделать его пригодным для тестирования? Спасибо.