3

jQueryはjqLit​​eに取って代わり、実際のアプリではjQueryも利用できないため、jQueryを使用せずにAngularJSアプリを(ユニット)テストしたいと思います。jQuery と jqLit​​e には実際の違いがあるため、単体テストで 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);
4

1 に答える 1