Привет, я хотел бы попросить о помощи, чтобы проверить функцию ниже. Мой подход заключается в том, что я буду назначать tr
для моего tagName в моем тестовом примере, чтобы проверить условия if внутри него.
Функция в моем файле TS: :
domEles : any;
length : number = 0;
moveToList(e : KeyboardEvent){
if(document.activeElement.tagName.toLowerCase() == "tr"){
this.domEles = document.querySelectorAll('#listTableBody > *');
this.length = this.domEles.length;
const activeEle = document.activeElement;
const activeEleIndex = Array.prototype.indexOf.call(this.domEles, activeEle);
if((e.key == "ArrowDown" || e.key == "Down") && activeEleIndex < this.length - 1 ) {
const nextElem = <HTMLElement>activeEle.nextElementSibling;
nextElem.focus();
}
if((e.key == "ArrowUp" || e.key == "Up") && activeEleIndex > 0) {
const prevElem = <HTMLElement>activeEle.previousElementSibling;
prevElem.focus();
}
this.detector.detectChanges();
}
}
В моем файле SPE C подход:
it('should trigger moveToList function',()=>{
let doc = (this as any).document.activeElement;
doc.tagName = "tr"
let nextElem = spyOn(doc.activeElement, 'nextElementSibling');
component.length = 5;
component.domEles = 1;
const e = new KeyboardEvent('keydown', {key: 'ArrowDown'});
component.moveToList(e);
expect(nextElem).toHaveBeenCalled();
});
Когда я выполнил тест и проверил, условия if внутри функции moveToList не выполняются / не запускаются этим тестом. Не могли бы вы помочь мне, ребята, за лучший подход к тестовому сценарию без изменения реальных кодов в функции. Заранее спасибо