Fundamentos del Testing en React
Testing de React: Asegura la Calidad de tu Código
Configuración de Vitest para Pruebas en React con Vite
Técnicas de Testing para Aplicaciones Web
Estrategias de Testing en React
Pruebas de componentes con Testing Library React
Pruebas Reactivas con Table Driven Testing
Metodología TDD: Pruebas Automatizadas en React
Pruebas unitarias con mocks en entornos controlados
Testing de Flujos de Usuario en React
Pruebas de Componentes React con JEST y Testing Library
Pruebas automatizadas con Jest y Testing Library en React
Test unitario de órdenes en función React
Testing de Componentes para SuperAdmin en React
Testing de Hooks en React
SOLID: Principios para un Código Sostenible en Desarrollo de Software
"Testeo de Hooks con Testing Library"
Testeo de Spies en React: Observando y verificando funciones
Pruebas de Integración y APIs en React
Configuración de Mock Service Worker en proyectos de prueba
Pruebas avanzadas con Mock Service Worker y hooks en React
Testeo de errores 500 en endpoints con Mock Service Worker
Reflexiones sobre Testing en React
Testing en React: Casos de Prueba con React Testing Library
Cobertura de Código: Tipos y Configuración en Vitest
Testeo de UI en React: Uso de Vitest y MockService Worker
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
La pantalla de login es crucial en cualquier sistema, ya que es la entrada principal para los usuarios. En esta guía, nos centraremos en cómo simular errores de inicio de sesión usando pruebas unitarias para un componente de React, siguiendo un enfoque práctico y utilizando Vitest como framework.
Primero, asegúrate de tener un archivo de prueba en el mismo directorio que tu componente login. Aquí, se importan las funciones necesarias desde Vitest:
import { describe, it, expect } from "vitest";
Define la suite de pruebas para el componente de login
. Será fundamental para asegurar que el componente se comporta como se espera en diversas situaciones.
Para renderizar el componente login
, necesitamos importar la función de render desde la biblioteca de testing de React:
import { render } from "@testing-library/react";
Al importar el componente login
, es vital encapsularlo con los proveedores necesarios para el contexto de pruebas. Aquí, se utiliza MemoryRouter
para simular el enrutador de React:
import { MemoryRouter } from 'react-router-dom';
import Login from './Login'; // Asegúrate de que la ruta es correcta
render(
<MemoryRouter>
<Login />
</MemoryRouter>
);
El componente login
utiliza useNavigate
y se depende de un SessionProvider
. Para simular estas dependencias, debemos configurarlas adecuadamente:
Simular useNavigate
:
Utilizamos MemoryRouter
en lugar de BrowserRouter
para el entorno de pruebas.
Proveer el SessionProvider
:
Importamos el SessionProvider
de nuestro contexto y lo añadimos al render:
import { SessionProvider } from '../context/AuthContext';
render(
<MemoryRouter>
<SessionProvider>
<Login />
</SessionProvider>
</MemoryRouter>
);
Usamos vi
y mock
de Vitest para simular el módulo y la función getAuth
, que autentica al usuario:
import { vi } from "vitest";
import getAuth from '../services/getAuth'; // Ruta de ejemplo
vi.mock('../services/getAuth', () => ({
default: vi.fn(() => Promise.reject(new Error("Invalid credentials")))
}));
Simula la interacción del usuario introduciendo credenciales incorrectas y verificando que el mensaje de error aparezca:
const usernameInput = screen.getByPlaceholderText('Username');
const passwordInput = screen.getByPlaceholderText('Password');
const loginButton = screen.getByRole('button', { name: /login/i });
await fireEvent.change(usernameInput, { target: { value: 'wronguser' } });
await fireEvent.change(passwordInput, { target: { value: 'wrongpass' } });
await fireEvent.click(loginButton);
Finalmente, comprueba que el mensaje de error se muestra adecuadamente:
const errorMessage = screen.getByText(/invalid credentials/i);
expect(errorMessage).toBeInTheDocument();
Con estas configuraciones, al ejecutar yarn test
, podrás ver que el test pasa correctamente, indicando que el mensaje de error se muestra cuando las credenciales no son válidas.
Este enfoque no solo garantiza que tu componente de login maneje correctamente las situaciones de error, sino que también asegura un desarrollo más confiable y robusto. ¡Sigue adelante y no pares de aprender!
Aportes 2
Preguntas 0
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?