0
按我的要求,我们需要编写热键测试规格(比如转移+ 1 + L - 上传文件)。在我的方法,我已经写类似下面如何定义键代码或或键盘事件或码性能
public static SHIFTKEY : number = 16;
this.keys = {};
document.addEventListener('keydown', (event: KeyboardEvent) => {
var code = event.which ? event.which : event.keyCode;
if (code === KeyCodeConst.SHIFTKEY || (this.keys[KeyCodeConst.SHIFTKEY] && trackedKeys[code])) {
if (!this.keys[code]) {
this.keys[code] = true;
this.keysCount++;
}
if (this.keysCount === 3) {
alert('call the method which is required');
}
}
if (!trackedKeys[code]) {
this.keysCount = 0;
}
});
现在在我的spec文件我试图写一个测试用例这个像下面
describe('Add Event Listener',() => {
beforeEach(() => {
viewModel = new viewModel();
spyOn(window, 'addEventListener').and.callThrough();
});
it('check the combination of keys are called',() => {
keyPress(16);
keyPress(49);
keyPress(76);
expect(viewModel.keys[KeyCodeConst.SHIFTKEY]).toBeTruthy();
});
function keyPress(keyCodeVal) {
var keyboardEvent = document.createEvent('KeyboardEvent');
try {
Object.defineProperty(keyboardEvent, 'keyCode', {'value': keyCodeVal});
} catch (err){
console.log(err);
}
keyboardEvent.initKeyboardEvent('keydown',true,false,window,'',0,'',false,'');
document.body.dispatchEvent(keyboardEvent);
}
});
虽然运行的版本,我得到这样的错误的下方,它给一个生成错误象下面
Attempting to change value of a readonly property.
at defineProperty (--some url--)
at keyPress (--some url--)
有没有一种方法,我们可以按键值发送给方法,除了键代码或。按照MDN指导方针,我观察到这些属于只读属性。我尝试使用密钥但它不起作用。
感谢。为了测试keydown事件,我需要在每个之前创建一个元素。像这样 - $('body')。append(“”);这将不符合我的目的 – Krishna
'triggerKeyDown(document.body,11)'应该工作 – DevDig
属性'KeyboardEvent'在类型'窗口'上不存在 - 我收到此错误。我检查了它不存在的库。 – Krishna