Joan Lecha
2025-01-30
Las pruebas unitarias son esenciales en el desarrollo de aplicaciones en React, ya que permiten asegurar la calidad del código, evitar errores en producción y facilitar el mantenimiento. En este artículo, exploraremos las mejores prácticas para escribir pruebas unitarias efectivas en React utilizando Jest y React Testing Library.
Framework de pruebas oficial de React.
Permite ejecutar pruebas de manera rápida y eficiente.
Soporte para mocks, spies y snapshots.
Enfocado en probar el comportamiento del usuario en los componentes.
Ayuda a evitar pruebas frágiles dependientes de la implementación interna.
Uso recomendado en combinación con Jest.
Para comenzar, instala las dependencias necesarias en tu proyecto React:
npm install --save-dev jest @testing-library/react @testing-library/jest-dom
Asegúrate de que en el archivo package.json
se incluya el siguiente script para ejecutar las pruebas:
"scripts": {
"test": "jest"
}
Supongamos que tenemos un componente Button.js
:
import React from 'react';
const Button = ({ label, onClick }) => {
return <button onClick={onClick}>{label}</button>;
};
export default Button;
Ahora, creamos un archivo de prueba Button.test.js:
import { render, screen, fireEvent } from '@testing-library/react';
import Button from '../Button';
test('debe renderizar el botón con el texto correcto', () => {
render(<Button label="Clickeame" />);
expect(screen.getByText(/Clickeame/i)).toBeInTheDocument();
});
test('debe llamar la función onClick cuando se hace clic', () => {
const handleClick = jest.fn();
render(<Button label="Clickeame" onClick={handleClick} />);
fireEvent.click(screen.getByText(/Clickeame/i));
expect(handleClick).toHaveBeenCalledTimes(1);
});
Prueba el Comportamiento, No la Implementación: Evita depender del estado interno o estructura de los componentes.
Usa Selectores Accesibles: Siempre usa getByRole, getByLabelText o getByText en lugar de getByTestId cuando sea posible.
Utiliza Mocks y Spies Cuando Sea Necesario: Evita pruebas lentas simulando peticiones HTTP con jest.mock().
Estructura Bien tus Pruebas: Agrupa pruebas en bloques describe() y usa nombres claros en test() para facilitar la lectura.
Puedes generar un reporte de cobertura de código ejecutando:
npm test --coverage
Esto mostrará qué partes del código no están siendo probadas, permitiéndote mejorar la calidad de tu test suite.
Implementar pruebas unitarias en React con Jest y React Testing Library es fundamental para asegurar la estabilidad de tu código. Siguiendo las mejores prácticas descritas, podrás escribir pruebas más efectivas y confiables, facilitando el mantenimiento y escalabilidad de tu proyecto. ¡Empieza a probar tu código hoy mismo!