Desarrollador .NET: pregunta de entrevista
¿Cuál es tu estrategia de testing .NET?
Usa unitarias para dominio, WebApplicationFactory para el pipeline HTTP, integración con almacenes reales para consultas EF y pocos end-to-end; controla relojes, cancelación y clientes externos.
Respuesta directa
Qué debe cubrir una buena respuesta
Cómo funciona
La lógica de dominio se prueba con xUnit o NUnit y sin infraestructura. El pipeline HTTP se prueba con WebApplicationFactory, que arranca la aplicación real en memoria con sustitutos de prueba para clientes externos y una base de datos de pruebas, así que enrutado, model binding, validación, filtros y autorización corren como en producción. Las consultas de EF Core corren contra un proveedor real en un contenedor y no contra el proveedor en memoria, que no se comporta como SQL. El tiempo llega de un TimeProvider inyectado, el HTTP externo de un handler falso, y la cancelación se prueba disparando el token. Unas pocas pruebas end-to-end cubren los recorridos críticos.
Ejemplo
OrdersApiTests usa WebApplicationFactory con una instancia PostgreSQL de Testcontainers y un handler de pagos falso; publica un pedido, afirma 201 y la cabecera Location y luego afirma que la fila existe. Una prueba unitaria del motor de precios inyecta un FakeTimeProvider para comprobar el límite de una promoción a medianoche, sin base de datos.
Errores frecuentes
- Usar el proveedor en memoria de EF y publicar SQL que falla en la base de datos real.
- Probar controladores llamando a métodos directamente y saltarse model binding y filtros.
- Depender de DateTime.UtcNow, de modo que las pruebas sensibles al tiempo fallan el día equivocado.
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.