es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , , ,

Answer

  1. Avatar for 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ón setWidth(), puedes usar el marco de pruebas Jasmine para escribir un caso de prueba.

    Primero, crea un objeto Spy para el método querySelectorAll del objeto document. Luego, crea una matriz de elementos simulados tipo HTMLElement y pásala al método and.returnValue() del objeto Spy.

    it('debería llamar a la función setWidth y ejecutar el bucle forEach de querySelectorAll', () => {
      const spy = spyOn(document, 'querySelectorAll');
      const mockElements = [document.createElement('div'), document.createElement('span')];
      spyOn(mockElements[0], 'offsetHeight').and.returnValue(100);
      spyOn(mockElements[1], 'offsetHeight').and.returnValue(200);
      spy.and.returnValue(mockElements);
    
      // llama a la función setWidth
      component.setWidth();
    
      // se espera que la función setWidth establezca maxHeight en 200
      expect(component.maxHeight).toBe(200);
    });
    

    En este caso de prueba, hemos creado un objeto spyOn para el método querySelectorAll del objeto document. También hemos creado una matriz simulada de dos objetos HTMLElement y hemos establecido sus propiedades offsetHeight en valores específicos.

    Finalmente, hemos llamado a la función setWidth() del componente y hemos afirmado que la propiedad maxHeight debe establecerse en 200 (el valor máximo de offsetHeight en nuestra matriz simulada).

    Al usar este caso de prueba, el bucle forEach dentro de la función setWidth() se ejecutará y se aumentará la cobertura de código.

Comments are closed.