2013-08-06 79 views
3

我想(單位)測試我的AngularJS應用程序而不訴諸使用jQuery,因爲jQuery將替換jqLit​​e,並且在真實應用程序中jQuery也將不可用。 jQuery和jqLit​​e之間存在真正的差異,因此在單元測試中使用jQuery可以爲AngularJS提供風險。模擬沒有jQuery的轉義按鍵

我的大多數測試現在沒有jQuery,但我需要爲轉義鍵觸發keydown,我只能找出如何使用jQuery。我將如何在Javascript中以跨瀏覽器的方式做到這一點?

該指令監聽逃生keydowns這樣的:

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); 

回答

-3

您可以檢出角UI @http://angular-ui.github.io/ui-utils/

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

這會有幫助嗎? – Maarten

+0

嗨,我已經更新爲你發佈 –

+0

所以使用,然後我可以單元測試該部分? – Maarten