Desarrollador Node.js: pregunta de entrevista
¿Cuál es tu estrategia de testing en Node.js?
Prueba módulos puros rápidamente, handlers HTTP con serialización real, integra bases desechables cuando importen las consultas, verifica fallos asíncronos y cancelación y deja solo rutas críticas end-to-end.
Respuesta directa
Qué debe cubrir una buena respuesta
Cómo funciona
Los módulos puros reciben pruebas unitarias rápidas con el runner integrado o vitest y sin E/S. Los handlers HTTP se prueban a través del router real con supertest para ejercitar serialización, validación y códigos de estado en vez de simularlos. Los módulos que construyen consultas corren contra un PostgreSQL desechable en Docker porque una consulta simulada no demuestra nada del SQL. El comportamiento asíncrono se prueba explícitamente: timeouts, cancelación con AbortSignal y rutas de rechazo. Un conjunto pequeño de pruebas end-to-end cubre los flujos que importan, y toda la suite es segura en paralelo dando a cada prueba sus propios datos.
Ejemplo
El módulo de precios tiene cuarenta pruebas unitarias con tablas. El router de pedidos se prueba con supertest contra una base de datos en contenedor, afirmando el cuerpo 422 para entradas inválidas y la cabecera Location del 201 en éxito. Una prueba afirma que abortar la señal de la solicitud cancela el fetch aguas arriba. El job end-to-end ejecuta el checkout en un navegador cada noche contra staging.
Errores frecuentes
- Simular la capa de base de datos y publicar una consulta SQL rota con pruebas en verde.
- Compartir un fixture global de base de datos entre pruebas paralelas y obtener fallos dependientes del orden.
- Probar código asíncrono con esperas de setTimeout en lugar de esperar la promesa real.
Una estructura útil para responder
Responde desde tu propia experiencia.
No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.
Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.