Skip to main content
Guía Completa de Testing Unitario en React con TypeScript: Mejora la Calidad de tu Frontend | Kranio

Hay que tener en cuenta que esta configuración es una configuración básica. Se puede personalizar según las necesidades específicas del proyecto.

Se debe integrarl el package.json la configuración para jest:

__CODE_BLOCK_PLACEHOLDER_2__

"test": "jest --watch": Ejecuta pruebas mientras trabajas y te muestra resultados al instante.

"test:coverage": "jest --coverage": puede ayudarte a identificar qué partes de tu código necesitan más pruebas.

Una vez que ya esté instalado, para poder ejecutar las pruebas de los test utilizamos el siguiente comando, puede ser solo y nos ejecutará todos los test pero también puede ponerse el nombre del archivo que queremos ejecutar para ir probando uno a uno

Jest buscará automáticamente archivos con el patrón *.test.tsx y ejecutará las pruebas definidas en ellos, en este caso es .tsx porque estamos usando typescript.

__CODE_BLOCK_PLACEHOLDER_3__

Jest buscará automáticamente archivos con el patrón *.test.tsx y ejecutará las pruebas definidas en ellos, en este caso es .tsx porque estamos usando typescript.

__CODE_BLOCK_PLACEHOLDER_4__

Métodos de Comparación en Jest y React Testing Library

Cuando escribimos pruebas para nuestro código en React usando Jest y React Testing Library, es importante saber cómo comparar los resultados esperados con los valores obtenidos durante las pruebas. En este documento, veremos cómo hacer estas comparaciones de manera efectiva.

Tipos de queries en Testing library (screen)

__CODE_BLOCK_PLACEHOLDER_5__
__CODE_BLOCK_PLACEHOLDER_6__
__CODE_BLOCK_PLACEHOLDER_7__

Principales querys

  1. getByRole: Esta consulta puede usarse para buscar todos los elementos que están expuestos en el árbol de accesibilidad. Con la opción name, puedes filtrar los elementos devueltos por su nombre accesible. Debería ser tu preferencia principal para casi todo.
  2. getByLabelText: Es muy útil para campos de formulario. Los usuarios navegan por formularios utilizando etiquetas. Esta consulta emula ese comportamiento y debería ser tu primera opción para campos de formulario.
  3. getByPlaceholderText: Un marcador de posición no reemplaza a una etiqueta, pero si eso es lo único que tienes, es mejor que otras alternativas.
  4. getByText: Fuera de los formularios, el contenido de texto es la principal manera en que los usuarios encuentran elementos. Puede usarse para encontrar elementos no interactivos como divs, spans y párrafos.
  5. getByDisplayValue: El valor actual de un elemento de formulario puede ser útil al navegar por una página con valores completados.

Semantic Queries

  1. getByAltText: Si el elemento es uno que admite texto alternativo (img, área, input y cualquier elemento personalizado), se puede usar esto para encontrar ese elemento.
  2. getByTitle: El atributo title no se lee de manera consistente por los lectores de pantalla y no es visible de manera predeterminada para los usuarios con vista.

IDs de Prueba

  1. getByTestId: El usuario no puede verlos (ni oírlos), por lo que solo se recomienda en casos donde no puedas hacer coincidir por rol o texto, o no tiene sentido (por ejemplo, el texto es dinámico).
💡Para comprender mejor estos conceptos, se recomienda revisar la documentación oficial y ver un video que, en mi opinión, resultó muy útil para entender las pruebas unitarias. https://testing-library.com/docs/queries/about/

¿Como saber cuando un test es async?

En JavaScript, y en el contexto de pruebas unitarias, como Jest y React Testing Library, un test se considera asíncrono (async) cuando involucra operaciones que no se ejecutan de inmediato, como llamadas a funciones que devuelven Promesas, temporizadores (por ejemplo, setTimeout) o interacciones con APIs asíncronas (como solicitudes de red).

Test Sincrónico (No-Async):

__CODE_BLOCK_PLACEHOLDER_8__

Test Asincrónico (Async):

__CODE_BLOCK_PLACEHOLDER_9__

Creación de Pruebas

__CODE_BLOCK_PLACEHOLDER_10__

En este ejemplo, estamos utilizando las funciones render y screen.getByText de React Testing Library para renderizar el componente Button y verificar si el elemento de botón con el texto "Click me" está presente en el documento.

💡 jest.fn(): Es una herramienta que permite crear funciones simuladas que guardan información sobre sus llamadas durante las pruebas. Esto es útil para verificar si una función se llama correctamente o para imitar el comportamiento de funciones en situaciones de prueba.

__CODE_BLOCK_PLACEHOLDER_11__

Supongamos que debemos testear si hay o no un titulo en el componente EventExceptionForm se puede iniciar la función del test con test o it.

__CODE_BLOCK_PLACEHOLDER_12__

Luego, se utilizan múltiples afirmaciones expect para verificar que los controladores se hayan llamado. Esto se hace con las siguientes líneas:

__CODE_BLOCK_PLACEHOLDER_13__

__CODE_BLOCK_PLACEHOLDER_14__

La expresión utiliza múltiples operadores ternarios (? :) para determinar el valor de **buttonText** basado en el estado del contenedor (container.currentState).

Este código realiza una prueba para confirmar que el botón mostrado en la interfaz de usuario coincida con el estado actual de un contenedor. Asegura que la interfaz muestre el botón adecuado para el estado del contenedor.

Conclusión

Las pruebas unitarias son una parte esencial del proceso de desarrollo de software. Nos permiten identificar y solucionar problemas en nuestros componentes y funciones antes de que lleguen a producción. Al utilizar Jest y React Testing Library, puedo crear pruebas unitarias efectivas para mis aplicaciones React. Entiendo que escribir pruebas sólidas no solo mejora la calidad de mi código, sino que también facilita el mantenimiento y la evolución de mi proyecto.

Referencias

https://medium.com/@angelygranados/cómo-empezar-a-hacer-unit-testing-con-jest-guía-básica-ca6d9654672

https://www.youtube.com/watch?v=QdqIqGPsLW0

https://www.youtube.com/watch?v=bTGil8qPmXo

¿Listo para mejorar la calidad y confiabilidad de tu frontend con pruebas unitarias efectivas?

En Kranio, contamos con expertos en testing que te ayudarán a implementar estrategias de pruebas unitarias utilizando herramientas como Jest y React Testing Library, asegurando que tus aplicaciones React funcionen correctamente y brinden una excelente experiencia al usuario. Contáctanos y descubre cómo podemos ayudarte a elevar la calidad de tu software frontend.

: 'ts-jest',  }, }; export default config;

Hay que tener en cuenta que esta configuración es una configuración básica. Se puede personalizar según las necesidades específicas del proyecto.

Se debe integrarl el package.json la configuración para jest:

__CODE_BLOCK_PLACEHOLDER_2__

"test": "jest --watch": Ejecuta pruebas mientras trabajas y te muestra resultados al instante.

"test:coverage": "jest --coverage": puede ayudarte a identificar qué partes de tu código necesitan más pruebas.

Una vez que ya esté instalado, para poder ejecutar las pruebas de los test utilizamos el siguiente comando, puede ser solo y nos ejecutará todos los test pero también puede ponerse el nombre del archivo que queremos ejecutar para ir probando uno a uno

Jest buscará automáticamente archivos con el patrón *.test.tsx y ejecutará las pruebas definidas en ellos, en este caso es .tsx porque estamos usando typescript.

__CODE_BLOCK_PLACEHOLDER_3__

Jest buscará automáticamente archivos con el patrón *.test.tsx y ejecutará las pruebas definidas en ellos, en este caso es .tsx porque estamos usando typescript.

__CODE_BLOCK_PLACEHOLDER_4__

Métodos de Comparación en Jest y React Testing Library

Cuando escribimos pruebas para nuestro código en React usando Jest y React Testing Library, es importante saber cómo comparar los resultados esperados con los valores obtenidos durante las pruebas. En este documento, veremos cómo hacer estas comparaciones de manera efectiva.

Tipos de queries en Testing library (screen)

__CODE_BLOCK_PLACEHOLDER_5__
__CODE_BLOCK_PLACEHOLDER_6__
__CODE_BLOCK_PLACEHOLDER_7__

Principales querys

  1. getByRole: Esta consulta puede usarse para buscar todos los elementos que están expuestos en el árbol de accesibilidad. Con la opción name, puedes filtrar los elementos devueltos por su nombre accesible. Debería ser tu preferencia principal para casi todo.
  2. getByLabelText: Es muy útil para campos de formulario. Los usuarios navegan por formularios utilizando etiquetas. Esta consulta emula ese comportamiento y debería ser tu primera opción para campos de formulario.
  3. getByPlaceholderText: Un marcador de posición no reemplaza a una etiqueta, pero si eso es lo único que tienes, es mejor que otras alternativas.
  4. getByText: Fuera de los formularios, el contenido de texto es la principal manera en que los usuarios encuentran elementos. Puede usarse para encontrar elementos no interactivos como divs, spans y párrafos.
  5. getByDisplayValue: El valor actual de un elemento de formulario puede ser útil al navegar por una página con valores completados.

Semantic Queries

  1. getByAltText: Si el elemento es uno que admite texto alternativo (img, área, input y cualquier elemento personalizado), se puede usar esto para encontrar ese elemento.
  2. getByTitle: El atributo title no se lee de manera consistente por los lectores de pantalla y no es visible de manera predeterminada para los usuarios con vista.

IDs de Prueba

  1. getByTestId: El usuario no puede verlos (ni oírlos), por lo que solo se recomienda en casos donde no puedas hacer coincidir por rol o texto, o no tiene sentido (por ejemplo, el texto es dinámico).
💡Para comprender mejor estos conceptos, se recomienda revisar la documentación oficial y ver un video que, en mi opinión, resultó muy útil para entender las pruebas unitarias. https://testing-library.com/docs/queries/about/

¿Como saber cuando un test es async?

En JavaScript, y en el contexto de pruebas unitarias, como Jest y React Testing Library, un test se considera asíncrono (async) cuando involucra operaciones que no se ejecutan de inmediato, como llamadas a funciones que devuelven Promesas, temporizadores (por ejemplo, setTimeout) o interacciones con APIs asíncronas (como solicitudes de red).

Test Sincrónico (No-Async):

__CODE_BLOCK_PLACEHOLDER_8__

Test Asincrónico (Async):

__CODE_BLOCK_PLACEHOLDER_9__

Creación de Pruebas

__CODE_BLOCK_PLACEHOLDER_10__

En este ejemplo, estamos utilizando las funciones render y screen.getByText de React Testing Library para renderizar el componente Button y verificar si el elemento de botón con el texto "Click me" está presente en el documento.

💡 jest.fn(): Es una herramienta que permite crear funciones simuladas que guardan información sobre sus llamadas durante las pruebas. Esto es útil para verificar si una función se llama correctamente o para imitar el comportamiento de funciones en situaciones de prueba.

__CODE_BLOCK_PLACEHOLDER_11__

Supongamos que debemos testear si hay o no un titulo en el componente EventExceptionForm se puede iniciar la función del test con test o it.

__CODE_BLOCK_PLACEHOLDER_12__

Luego, se utilizan múltiples afirmaciones expect para verificar que los controladores se hayan llamado. Esto se hace con las siguientes líneas:

__CODE_BLOCK_PLACEHOLDER_13__

__CODE_BLOCK_PLACEHOLDER_14__

La expresión utiliza múltiples operadores ternarios (? :) para determinar el valor de **buttonText** basado en el estado del contenedor (container.currentState).

Este código realiza una prueba para confirmar que el botón mostrado en la interfaz de usuario coincida con el estado actual de un contenedor. Asegura que la interfaz muestre el botón adecuado para el estado del contenedor.

Conclusión

Las pruebas unitarias son una parte esencial del proceso de desarrollo de software. Nos permiten identificar y solucionar problemas en nuestros componentes y funciones antes de que lleguen a producción. Al utilizar Jest y React Testing Library, puedo crear pruebas unitarias efectivas para mis aplicaciones React. Entiendo que escribir pruebas sólidas no solo mejora la calidad de mi código, sino que también facilita el mantenimiento y la evolución de mi proyecto.

Referencias

https://medium.com/@angelygranados/cómo-empezar-a-hacer-unit-testing-con-jest-guía-básica-ca6d9654672

https://www.youtube.com/watch?v=QdqIqGPsLW0

https://www.youtube.com/watch?v=bTGil8qPmXo

¿Listo para mejorar la calidad y confiabilidad de tu frontend con pruebas unitarias efectivas?

En Kranio, contamos con expertos en testing que te ayudarán a implementar estrategias de pruebas unitarias utilizando herramientas como Jest y React Testing Library, asegurando que tus aplicaciones React funcionen correctamente y brinden una excelente experiencia al usuario. Contáctanos y descubre cómo podemos ayudarte a elevar la calidad de tu software frontend.

Entradas anteriores

Kranear también es proteger: el proceso detrás de nuestra certificación ISO 27001

Kranear también es proteger: el proceso detrás de nuestra certificación ISO 27001

A finales de 2025, Kranio obtuvo la certificación ISO 27001 tras implementar su Sistema de Gestión de Seguridad de la Información (SGSI). Este proceso no fue solo un ejercicio de cumplimiento, sino una decisión estratégica para fortalecer cómo diseñamos, construimos y operamos sistemas digitales. En este artículo compartimos el proceso, los cambios internos que implicó y el impacto que tiene para nuestros clientes: mayor control, gestión estructurada de riesgos y una base más sólida para escalar sistemas con confianza.

Estándares de desarrollo: el sistema operativo invisible que permite escalar sin quemar al equipo

Estándares de desarrollo: el sistema operativo invisible que permite escalar sin quemar al equipo

Descubre cómo los estándares de desarrollo reducen bugs, aceleran el onboarding y permiten escalar equipos de ingeniería sin generar fricción.