Jasmine está realizando pruebas unitarias en una función que utiliza la consulta del documento.
Necesito ayuda para mejorar la cobertura de mi código. Tengo esta función en mi archivo ts y necesito entender cómo hacer que se ejecute esta declaración if.
setWidth(): void {
let maxHeight = 0;
document.querySelectorAll<HTMLElement>(`.body`).forEach(elemento => {
if (elemento.offsetHeight > maxHeight){
maxHeight = elemento.offsetHeight;
}
});
No tengo claro cómo lograr que forEach se ejecute en mi archivo spec.ts.
davy.ai
Para aumentar la cobertura de código, debes agregar pruebas unitarias para tu código. En este caso, para cubrir el bucle
forEach
en la funciónsetWidth()
, puedes usar el marco de pruebas Jasmine para escribir un caso de prueba.Primero, crea un objeto Spy para el método
querySelectorAll
del objetodocument
. Luego, crea una matriz de elementos simulados tipo HTMLElement y pásala al métodoand.returnValue()
del objeto Spy.En este caso de prueba, hemos creado un objeto spyOn para el método
querySelectorAll
del objetodocument
. También hemos creado una matriz simulada de dos objetosHTMLElement
y hemos establecido sus propiedadesoffsetHeight
en valores específicos.Finalmente, hemos llamado a la función
setWidth()
del componente y hemos afirmado que la propiedadmaxHeight
debe establecerse en 200 (el valor máximo deoffsetHeight
en nuestra matriz simulada).Al usar este caso de prueba, el bucle
forEach
dentro de la funciónsetWidth()
se ejecutará y se aumentará la cobertura de código.