在没有jquery的情况下模拟转义键按下

时间:2013-08-06 08:18:47

标签: unit-testing angularjs jqlite

我想(单位)测试我的AngularJS应用程序而不使用jQuery,因为jQuery将取代jqLit​​e,而在真正的应用程序中jQuery也将无法使用。 jQuery和jqLit​​e之间存在真正的差异,因此在单元测试中让AngularJS使用jQuery是一种风险。

我的大多数测试现在没有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);

1 个答案:

答案 0 :(得分:-3)

您可以结帐Angular UI @ http://angular-ui.github.io/ui-utils/

<textarea ui-keydown="{27:'keydownCallback($event)'}"></textarea>