Testing en React con Vitest y Testing Library

Aprende a escribir tests útiles en React centrados en comportamiento real de usuario usando Vitest y React Testing Library.

El testing útil en React no busca validar detalles internos de implementación, sino comportamiento visible para el usuario.

Vitest ofrece ejecución rápida y DX moderna, mientras React Testing Library ayuda a testear componentes desde la perspectiva de uso real.

La idea central: renderizar componente, interactuar como usuario y verificar resultado esperado en pantalla.

Este enfoque da tests más resistentes a refactors y evita fragilidad por cambios de estructura interna.

  • Un buen test sobrevive cuando refactorizas internamente pero la UX sigue igual.
  • Evita testear estado interno o métodos privados del componente.
  • Prefiere assertions sobre texto visible, roles accesibles y efectos de interacción.
  • Cuanto más se parezca el test al uso real, mayor valor aporta al producto.
  • Render del componente.

Filosofía: testear comportamiento, no implementación

Un buen test sobrevive cuando refactorizas internamente pero la UX sigue igual.

Evita testear estado interno o métodos privados del componente.

Prefiere assertions sobre texto visible, roles accesibles y efectos de interacción.

Cuanto más se parezca el test al uso real, mayor valor aporta al producto.

  • Render del componente.
  • Interacción del usuario.
  • Verificación observable.
  • Bajo acoplamiento a implementación.

Setup básico con Vitest

Configurar entorno de pruebas correctamente evita falsos negativos y fricción diaria.

Queries recomendadas

Las queries por rol y nombre accesible suelen ser las más robustas.

`getByRole` refleja cómo tecnologías asistivas encuentran elementos.

`getByText` es útil para contenido textual estable y semántico.

Evita depender de `data-testid` salvo cuando no haya alternativa semántica clara.

React
22

Testing en React con Vitest y Testing Library

Aprende a escribir tests útiles en React centrados en comportamiento real de usuario usando Vitest y React Testing Library.

Código del tema: Componentes, estado y render declarativo

📘 Teoría

Filosofía: testear comportamiento, no implementación

Un buen test sobrevive cuando refactorizas internamente pero la UX sigue igual.

Evita testear estado interno o métodos privados del componente.

Prefiere assertions sobre texto visible, roles accesibles y efectos de interacción.

Cuanto más se parezca el test al uso real, mayor valor aporta al producto.

  • Render del componente.
  • Interacción del usuario.
  • Verificación observable.
  • Bajo acoplamiento a implementación.

Setup básico con Vitest

Configurar entorno de pruebas correctamente evita falsos negativos y fricción diaria.

Ejemplo de test de contador
import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { describe, it, expect } from 'vitest';
import Counter from './Counter';

describe('Counter', () => {
  it('incrementa al hacer click', async () => {
    render(<Counter />);
    const button = screen.getByRole('button', { name: /incrementar/i });

    await userEvent.click(button);

    expect(screen.getByText('1')).toBeInTheDocument();
  });
});

Queries recomendadas

Las queries por rol y nombre accesible suelen ser las más robustas.

1

`getByRole` refleja cómo tecnologías asistivas encuentran elementos.

2

`getByText` es útil para contenido textual estable y semántico.

3

Evita depender de `data-testid` salvo cuando no haya alternativa semántica clara.

🧪 Aprende probando

Ejemplo Ejemplo: test de formulario Simula escritura y submit para comprobar mensaje final.

🏁 Retos

Reto Reto: verifica texto tras click Completa assertion final para confirmar que aparece `Guardado` después de pulsar botón.

🧰 Recursos

Test

Comprueba tus conocimientos con un test sobre React.

Test de React

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .