Pruebas unitarias con xUnit, InMemory y Copilot
Clase 20 de 21 • Curso de APIs con .NET
Contenido del curso
Estructura de una Web API
- 7

Configuración CORS en .NET: solución al error
07:08 min - 8

Rutas en APIs .NET con parámetros
12:50 min - 9

Documentación de APIs con OpenAPI y Swagger en .NET
14:25 min - 10

Middlewares en ASP.NET: pipeline y custom middleware
10:32 min - 11

Inyección de dependencias en .NET: ILogger
09:18 min - 12

Middleware para autenticación básica en .NET
08:17 min
Arquitectura y Middlewares
- 13

Configuración de Entity Framework Core en .NET
07:31 min - 14

Modelos C# y relaciones con Entity Framework
10:01 min - 15

Servicios con Entity Framework para ASP.NET
13:51 min - 16

Cómo crear controladores API en .NET
14:47 min - 17

Conectar API .NET con PostgreSQL
06:57 min - 18

Conectar API .NET a PostgreSQL con EF Core
06:57 min - 19

Clean Architecture en .NET APIs escalables
09:08 min - 20

Pruebas unitarias con xUnit, InMemory y Copilot
Viendo ahora - 21

Qué sigue después de tu API con .NET
02:16 min
Implementa pruebas unitarias en .NET con xUnit, Entity Framework InMemory y Copilot en Visual Studio para asegurar calidad desde el inicio. Aprenderás a crear el proyecto de pruebas, configurar dependencias, generar casos con IA, ejecutar validaciones y aplicar el patrón triple A (Arrange-Act-Assert) sin fricción.
¿Cómo crear y configurar el proyecto de pruebas con xUnit en .NET?
Inicia creando un proyecto de tipo xUnit y sigue una convención de nombres clara. Esto facilita que las herramientas de integración detecten automáticamente el módulo de pruebas y mejoren el flujo de CI/CD.
- Crear proyecto con xUnit en Visual Studio.
- Nombrar el proyecto como CursoApis.test.
- Seleccionar .Net 10.
- Eliminar la prueba por defecto.
¿Qué dependencias instalar para aislar la lógica?
Para evitar dependencias externas y garantizar pruebas deterministas, instala los paquetes clave.
- Librería de mocks para imitar servicios externos (por ejemplo, logger).
- Entity Framework y InMemory para una base de datos en memoria.
- Uso de InMemory: permite probar el App DbContext sin un servidor real.
¿Por qué la nomenclatura importa para integración continua?
Seguir el estándar con sufijo .test es útil porque:
- Muchas herramientas buscan automáticamente proyectos que terminan en test.
- Facilita la organización por capa y responsabilidad.
- Mejora la mantenibilidad y la colaboración.
¿Cómo usar Copilot en Visual Studio para generar pruebas unitarias?
Aprovecha Copilot con dos modos para crear las pruebas del servicio sin trabajo repetitivo, manteniendo contexto con el archivo activo.
- Modos disponibles: Ask (chat con respuestas para copiar) y Agent (aplica cambios en archivos del proyecto).
- Activar el active document con el archivo de TaskService como referencia.
- Prompt recomendado en plural para abarcar varios métodos:
Crea las pruebas unitarias para el servicio de Task Service utilizando una base de datos en memoria para App DbContext
- Importancia del plural: evita que genere una sola prueba a un único método.
- Compilación inicial: si faltan referencias, instálalas y recompila.
- Selección de modelo: se menciona uso de GPT Mini y GPT-5 Mini como opciones gratuitas; también Cloud Sonnet destacó por su rendimiento en código.
¿Cómo validar, ejecutar y mantener las pruebas con el patrón triple A?
Visualiza y ejecuta los casos desde Test Explorer: se generaron cuatro pruebas y se ejecutaron correctamente. La estructura y claridad del patrón triple A dan confianza continua al refactorizar.
¿Qué es el patrón triple A y cómo se aplica?
El patrón organiza cada test en tres fases para mantener foco y legibilidad.
- Arrange: crea la base de datos en memoria con un nombre único. Instancia TaskService.
- Act: ejecuta el método a probar, por ejemplo, un get all.
- Assert: valida que el resultado sea el esperado.
¿Cómo detectar regresiones con cambios de lógica?
Un cambio aparentemente inocuo puede romper escenarios existentes.
- Ejemplo: aplicar un filtro tipo where con “ID < 0” provoca que no se devuelva nada.
- Efecto observado: una prueba esperaba dos registros y recibió cero.
- Beneficio: las pruebas alertan de inmediato cuando se daña la lógica previa.
¿Qué herramientas usar para ejecutar pruebas en Visual Studio y la terminal?
Puedes ejecutar desde la interfaz o desde la línea de comandos con el mismo resultado.
- Ver resultados y detalles en Test Explorer.
- Ejecutar en terminal en el proyecto de pruebas:
dotnet test
- Resultado esperado del ejemplo: cuatro pruebas en total; una falló tras el cambio y tres pasaron.
¿Listo para aumentar la cobertura? Comenta qué métodos agregaste, qué prompts te funcionaron mejor con Ask o Agent y cómo configuraste InMemory para tu App DbContext.