要素を作成する次の AngularJS ディレクティブがありinput
ます。入力には関数ng-change
を実行する属性がありdoIt()
ます。私のディレクティブの単体テストdoIt
では、ユーザーが入力を変更したときに関数が呼び出されるかどうかを確認したいと考えています。しかし、テストは合格しません。手動でテストするときはブラウザで動作しますが。
指令:
...
template: "<input ng-model='myModel' ng-change='doIt()' type='text'>"
テスト:
el.find('input').trigger('change') // Dos not trigger ng-change
ライブデモ (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
ますか?ありがとうございました。