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.

Practica esta respuesta con MiraHint

Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.

Descargar MiraHint
Preguntas de entrevista para Desarrollador .NET