我想(单元)测试我的 AngularJS 应用程序而不使用 jQuery,因为 jQuery 将取代 jqLite,而在真正的应用程序中 jQuery 也将不可用。jQuery 和 jqLite 之间存在真正的区别,因此在单元测试中让 jQuery 可用于 AngularJS 是有风险的。
我的大多数测试现在在没有 jQuery 的情况下都可以正常工作,但是我需要为转义键触发 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);