Pruebas End-to-End para API de Productos sin Autenticación
Clase 21 de 25 • Curso de End to End Testing para APIs REST con Node.js
Contenido del curso
- 2

Exploración y Configuración de APIs con Insomnia y Postman
10:37 - 3

Pruebas en Node.js con Jest y Clean Architecture
10:06 - 4

Configuración y uso de Jest para pruebas end-to-end en JavaScript
08:04 - 5

Pruebas End-to-End con Supertest y Node.js
13:47 - 6

Buenas prácticas en pruebas con Jest y manejo de ciclos abiertos
08:30
- 7

Configuración de Entorno de Pruebas para Aplicaciones Node.js con Twen.js
11:25 - 8

Generación de Reporte de Cobertura con Pruebas End to End
07:32 - 9

Pruebas de Integridad de Datos con DTOs y Joy en APIs REST
20:16 - 10

Pruebas End-to-End con Base de Datos en API REST
17:21 - 11

Pruebas de Autenticación en Login con JavaScript
16:26 - 12

Pruebas de Rutas Protegidas con API Key en Node.js
07:03 - 13

Pruebas End-to-End con Access Token en API REST
14:16 - 14

Pruebas Efectivas de Creación de Usuarios en POS con Bases de Datos
09:03
- 15

Pruebas End-to-End: Gestión de Datos con Semillas Automatizadas
10:26 - 16

Configuración de Bases de Datos para Pruebas End-to-End con Docker
17:57 - 17

Creación de Sets de Datos Manuales para Pruebas End-to-End
15:49 - 18

Sets de Datos en SQLite: Creación y Gestión Efectiva
14:58 - 19

Uso de Unsook para Migraciones Programáticas en Pruebas
10:53 - 20

Pruebas de API: Creación de Categorías con Roles y Tokens
10:28 - 21

Pruebas End-to-End para API de Productos sin Autenticación
06:01 - 22

Pruebas de Paginación en Endpoints de Productos con Limit y Offset
04:38
¿Cómo escribir pruebas para el endpoint de productos?
En el fascinante mundo del desarrollo de software, escribir pruebas efectivas es crucial para garantizar la calidad de nuestras aplicaciones. En este contexto, nos enfocaremos en la creación de pruebas para el endpoint que retorna todos los productos de una tienda en línea. Estas pruebas asegurarán que la aplicación funcione correctamente, incluso después de realizar cambios en el código.
¿Cómo iniciar con las pruebas de productos?
Primero, creamos un archivo nuevo de pruebas llamado products.end2end.js. A diferencia de los endpoints protegidos que requieren un access token, este endpoint es de acceso libre, facilitando su prueba. Partimos de un set de datos que contiene cuatro productos. Nuestro objetivo será confirmar que el endpoint retorna exactamente esos cuatro artículos.
Código de prueba inicial
// products.end2end.js
// Realizamos una petición a nuestro endpoint de productos
const response = await api.get('/api/v1/products');
// Verificamos el código de estado HTTP
expect(response.status).toBe(200);
// Comprobamos que el tamaño del conjunto de productos coincida con el de la base de datos
const productsInDb = await models.Product.find();
expect(response.body.length).toBe(productsInDb.length);
Ejecutamos la prueba desde la terminal con el comando npm run end2end y verificamos que se ejecute exitosamente, asegurando la correspondencia entre los productos retornados y los almacenados.
¿Cómo verificar la categoría anidada en los productos?
Algunas aplicaciones requieren que cada producto incluya información anidada, como una categoría. Esto es crucial para mantener la integridad y funcionalidad del frontend, especialmente durante el mantenimiento de la API.
Verificación de anidación de categoría
Añadimos una prueba para garantizar que cada producto incluya su categoría:
// Accedemos al primer producto del array retornado
const product = response.body[0];
// Verificamos la existencia del objeto 'category'
expect(product).toHaveProperty('category');
Si por alguna razón, el código que anida la categoría es eliminado o comentado, esta prueba fallará advertiéndonos del error. Esto es especialmente útil para evitar despliegues defectuosos que impacten negativamente en el frontend.
Importancia de estas pruebas
Implementar estas pruebas garantiza que nuestra API maneje correctamente la información, previniendo problemas futuros en la interacción con el frontend. Esta práctica de testing no solo detecta errores potenciales, sino que también es una herramienta invaluable durante el mantenimiento del código, asegurando la robustez y confiabilidad de nuestras aplicaciones.
A medida que profundices más en el temario, te animamos a seguir explorando y practicando con entusiasmo. Recordando siempre: ¡cada prueba es un paso más hacia la excelencia en el desarrollo de software!