Unit testing 不使用jquery模拟escape按键

Unit testing 不使用jquery模拟escape按键,unit-testing,angularjs,jqlite,Unit Testing,Angularjs,Jqlite,我想(单元)测试我的AngularJS应用程序,而不用使用jQuery,因为jQuery将取代jqLite,而在真正的应用程序中jQuery也不可用。 jQuery和jqLite之间确实存在差异,因此在单元测试中让jQuery可用于AngularJS是一种风险 现在,我的大多数测试在没有jQuery的情况下都可以正常工作,但是我需要为escape键触发一个keydown,我只能找到如何使用jQuery。我将如何以跨浏览器的方式在Javascript中实现这一点 该指令将侦听以下转义键: body

我想(单元)测试我的AngularJS应用程序,而不用使用jQuery,因为jQuery将取代jqLite,而在真正的应用程序中jQuery也不可用。 jQuery和jqLite之间确实存在差异,因此在单元测试中让jQuery可用于AngularJS是一种风险

现在,我的大多数测试在没有jQuery的情况下都可以正常工作,但是我需要为escape键触发一个keydown,我只能找到如何使用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);

您可以签出Angular UI@


问题不是“如何才能最好地听escape按键”,而是“如何在没有jQuery的情况下模拟ESC按键”。
<textarea ui-keydown="{27:'keydownCallback($event)'}"></textarea>