Requisitos
Pruebas End-to-End para APIs con Node.js y Express
Introducción: pruebas e2e con Node.js
Pruebas de API con Insomnia y Postman: Exploración y Configuración
Pruebas Unitarias en Node.js con Jest y SQLite
Configuración de Jest para Pruebas End-to-End en JavaScript
Pruebas E2E en Node.js con Supertest y Express
Pruebas Unitarias Efectivas con Jest y Buenas Prácticas
Pruebas a la API de Fake Store
Configuración de pruebas E2E en Node.js con Twen.js
Generación de Reporte de Cobertura con Pruebas End-to-End
Pruebas de validación de datos con DTOs y Joy en Node.js
Pruebas End-to-End para APIs con Base de Datos Real
Pruebas End-to-End con Jest y Supertest en Node.js
Pruebas de API: Autenticación con Headers y API Key
Pruebas de Rutas Protegidas con Access Token en Node.js
Pruebas Efectivas de Endpoints y Bases de Datos en Proyectos POS
Pruebas en Entornos de Desarrollo Avanzados
Pruebas End-to-End con Semillas de Datos en APIs
Configuración Docker para Pruebas: Base de Datos Postgres
Semillas de Información en SQLite para Pruebas End-to-End
Creación de sets de datos en SQLite: Uso y organización efectiva
Automatización de Seed Data con Unsock en Entornos de Pruebas
Pruebas de JWT y Roles en Node.js
Pruebas E2E en Node.js para APIs RESTful
Pruebas de Paginación con Query Params en Endpoints de API
Mocking y automatización
Mocking de Servicios Externos con NodeMailer
Automatización de Pruebas con GitHub Actions y Node.js
Próximos pasos
Pruebas Punto a Punto con Node.js para APIs
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
El uso de mocking se convierte en una herramienta esencial al realizar pruebas de aplicaciones complejas, especialmente cuando se trabajan con servicios externos que escapan a nuestro control. En el testing de software, el mocking permite simular el comportamiento de ciertos componentes o servicios para verificar cómo la aplicación responde a diversas condiciones sin depender de servicios externos reales.
Durante la ejecución de pruebas end-to-end, tratamos de integrar la mayor cantidad de componentes posibles de nuestra aplicación, incluyendo bases de datos y servicios externos. Sin embargo, llega un punto en el que no es factible o posible asegurar toda la funcionalidad de estos servicios de terceros, como es el caso de APIs externas o servicios de correo electrónico.
Un caso práctico de mocking se da al trabajar con la función NodeMailer, la cual gestiona el envío de correos electrónicos, como se describió en el ejemplo de recuperación de contraseñas. Al enviar un correo para recuperar una contraseña, no se puede verificar si el correo llegó con éxito, ya que no tenemos acceso a la base de datos de servicios como Gmail. Por lo tanto, emulamos mediante mocking que el correo ha sido enviado.
Definición del EndPoint: La aplicación recibe un email para verificar si el usuario existe y firma un JWT que se guardará en la base de datos para el proceso de recuperación de contraseña.
Envío de Email: Aquí reside el mayor desafío, ya que no podemos confirmar la entrega del correo en Gmail. Simularemos esta acción asegurando que supuestamente se ha enviado con éxito.
// Definimos la funcionalidad de mocking en Jest
const mockSendMail = jest.fn();
jest.mock('nodemailer', () => {
return {
createTransport: jest.fn().mockImplementation(() => {
return {
sendMail: mockSendMail
};
})
};
});
// Simulamos el comportamiento esperado
mockSendMail.mockResolvedValue(true);
Al ejecutar pruebas, hemos de asegurarnos que las funciones simuladas estén siendo llamadas correctamente. En caso de errores, como en las credenciales de SMTP, es crucial que las pruebas no se detengan, ya que están diseñadas para ser independientes del correo electrónico real.
console.log
para depuraciónEl console.log
sigue siendo una herramienta valiosa cuando necesitamos comprender la salida de nuestras pruebas, especialmente para identificar dónde se están produciendo los errores. Esto ayuda no solo a encontrar errores en mi código, sino también en mi lógica de pruebas:
console.log(body); // Ayuda a depurar
Una vez que hemos asegurado que nuestras pruebas funcionan eficientemente mediante mocking, podemos avanzar hacia la automatización de pruebas en plataformas como GitHub Actions. Esto nos permitirá ejecutar nuestras pruebas con cada cambio en el código de manera eficiente, garantizando siempre la calidad y estabilidad de nuestra aplicación.
Aportes 1
Preguntas 0
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?