jQueryはjqLiteに取って代わり、実際のアプリではjQueryも利用できないため、jQueryを使用せずにAngularJSアプリを(ユニット)テストしたいと思います。jQuery と jqLite には実際の違いがあるため、単体テストで AngularJS で jQuery を使用できるようにするのは危険です。
私のテストのほとんどは、現在 jQuery なしで正常に動作しますが、エスケープ キーのキーダウンをトリガーする必要があります。これは、jQuery を使用してのみ行う方法を見つけることができます。クロスブラウザの方法でJavascriptでそれを行うにはどうすればよいですか?
ディレクティブは、次のようなエスケープ キーダウンをリッスンします。
body.bind('keydown', handledEscapeKey);
var handledEscapeKey = function(e) {
if (e.which === 27) {
e.preventDefault();
scope.$apply(scope.hideTooltip());
}
};
私はこれを試しましたが、うまくいかないようです:
if( window.KeyEvent ) {
var evObj = $document.createEvent('KeyEvents');
evObj.initKeyEvent( 'keydown', true, true, $window, false, false, false, false, 27, 0 );
} else {
var evObj = $document.createEvent('UIEvents');
evObj.initUIEvent( 'keydown', true, true, $window, 1 );
evObj.keyCode = 27;
}
elm[0][0].dispatchEvent(evObj);