No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Curso de React Testing Library

Curso de React Testing Library

Wilmer Javier Garzon Cabezas

Wilmer Javier Garzon Cabezas

Pruebas de componentes con Testing Library React

4/20
Recursos

驴C贸mo realizar un test efectivo para un componente en React?

Realizar tests efectivos para tus componentes es crucial para asegurar la funcionalidad de tus aplicaciones.

Ejecutaremos tests para el componente聽Button en nuestra aplicaci贸n de Platzi Orders y analizaremos sus prop types.

Al realizar los tests, es esencial entender qu茅 aspectos necesitamos verificar.

驴Cu谩les son los prop types del componente Button?

Primero, desglosamos los prop types del componente Button:

  • Label: el texto que se muestra en el bot贸n.

  • OnClick: la funci贸n que se ejecuta al hacer clic en el bot贸n.

  • Type: el tipo de bot贸n, que est谩 definido en los prop types.

Si est谩s comenzando con TypeScript, es recomendable revisar la secci贸n de recursos que proporciona m谩s informaci贸n sobre interfaces o types.

驴C贸mo configuramos el entorno de testing?

Para empezar, generamos un nuevo archivo Button.test.tsx.

Importamos desde聽Vitest las estructuras de describe, it y expect. Estas herramientas nos ayudar谩n a organizar y ejecutar los tests.

Creamos una agrupaci贸n con describe, nombramos el test como Button, y estructuramos nuestro primer caso: "Deber铆a renderizar el bot贸n".

import { describe, it, expect } from 'vitest';
import { describe, it, expect } from 'vitest';
import Button from './Button';

describe('Button', () => {
it('deber铆a renderizar el bot贸n', () => {
render(<*Button label="Clic" />);
const button = screen.getByText('Clic');
expect(button).toBeInTheDocument();
});
});


驴Qu茅 son los handlers de eventos y c贸mo se testean?

El siguiente paso es testear que la funci贸n聽onClick que estamos enviando sea llamada cuando se ejecute el handler onClick.

Patr贸n 'Arrange, Act, Assert'

Antes de entrar en los detalles del c贸digo, exploremos el patr贸n Arrange, Act, Assert.聽Esto equivale a preparar, actuar y confirmar:

  1. Arrange: preparar el componente para el test.

  2. Act: ejecutar la acci贸n sobre el componente (en este caso, un clic).

  3. Assert: verificar que el resultado sea el esperado.

Implementamos un test para la funci贸n onClick utilizando este patr贸n:

import { describe, it, expect, vi } from 'vitest';
import { render, screen, fireEvent } from '@testing-library/react';
import Button from './Button';

describe('Button', () => {
it('deber铆a llamar a la funci贸n onClick', async () => {
const handleClick = vi.fn();
render(<*Button label="Clic" onClick={handleClick} />);
const button = screen.getByText('Clic');
fireEvent.click(button);

expect(handleClick).toHaveBeenCalledTimes(1);
});
});


驴C贸mo gestionar errores comunes en el testing?

Es posible encontrarse con errores de sintaxis o de ejecuci贸n.聽Por ejemplo, si el bot贸n no se renderiza porque falta la propiedad聽label, aparecer谩 un error que nos alertar谩. Aseg煤rate de corregirlo antes de continuar.

驴Por qu茅 es importante una buena estructura en los tests?

Tener una estructura clara y concisa en los tests, utilizando patrones como Arrange, Act, Assert, ayuda enormemente a mejorar la organizaci贸n y comprensi贸n.聽Adem谩s, permite modificar y escalar los tests con m谩s facilidad.

Al aplicar estos conceptos, tus tests ser谩n m谩s robustos y efectivos frente a los cambios o actualizaciones en el c贸digo.

Te invito a seguir explorando y aprendiendo nuevas t茅cnicas en el mundo del testing para mejorar la calidad de tus aplicaciones. 馃殌

Aportes 1

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

En el segundo test, se utiliza `async/await` para manejar la ejecuci贸n asincr贸nica del c贸digo. Esto es importante porque el evento de clic que se genera en el test puede involucrar operaciones que no se completan instant谩neamente, como cambios en el DOM. Al usar `await act()`, estamos esperando a que estas operaciones se procesen completamente antes de hacer afirmaciones sobre el estado del componente. Esto asegura que las pruebas se realicen de manera precisa y confiable.