POLITICA DE COOKIES

Q2BSTUDIO.COM utiliza cookies técnicas, analíticas, de sesión y de publicidad con la finalidad de prestar un mejor servicio. No obstante, necesitamos su consentimiento explícito para poder utilizarlas. Así mismo puede cambiar la configuración de las cookies u obtener más información aquí .

Pruebas de Servicios en .NET 8 con NUnit y Moq

Pruebas de Servicios en .NET 8 con NUnit y Moq

Publicado el 01/09/2025

Introducción

Probar correctamente los servicios es clave para construir aplicaciones mantenibles y confiables. En esta guía verás cómo crear y ejecutar pruebas unitarias en .NET 8 utilizando NUnit y Moq para simular dependencias, simplificando la escritura, ejecución y mantenimiento de las pruebas.

Requisitos

C sharp, .NET 8, Docker, NUnit y Moq

Qué vamos a probar

Validaremos un servicio encargado de crear pedidos en una app de pizzas. La interfaz expone un método Execute que recibe una solicitud de creación de pedido y un token de cancelación, y devuelve un resultado que indica éxito o error. El servicio inyecta repositorios de clientes, productos y pedidos, además de una unidad de trabajo para confirmar la transacción. La lógica principal es: validar que todas las cantidades de ítems sean mayores que cero, comprobar que el cliente existe, cargar cada producto por su identificador, construir el pedido con sus ítems, persistirlo y confirmar la operación. Si algo falla, se devuelve un resultado de error con un mensaje descriptivo.

Enfoque de pruebas

Nos centraremos en dos escenarios: uno exitoso y otro de error por cantidad inválida. Crearemos un proyecto de pruebas NUnit dentro de la misma solución y usaremos Moq para simular las interfaces que consume el servicio.

Estructura del proyecto de pruebas

Definimos una clase CreateOrderServiceTests con campos Mock para las interfaces IOrderRepository, ICustomerRepository, IProductRepository e IUnitOfWork. En el método de inicialización SetUp, instanciamos los mocks y creamos el servicio inyectando los objetos simulados.

Escenario 1: crear pedido con éxito

Arrange: creamos un cliente válido y varios productos representativos como una pizza, una bebida y un postre. Preparamos una lista de ítems de pedido con cantidades válidas y armamos la solicitud de creación del pedido con el identificador del cliente y los ítems.

Setup: configuramos el repositorio de clientes para que al consultar por el identificador devuelva el cliente creado. Configuramos el repositorio de productos para que, por cada identificador de producto utilizado en los ítems, devuelva el producto correspondiente.

Act: ejecutamos el método Execute del servicio con la solicitud y un token de cancelación.

Assert: verificamos que el resultado indique éxito, que el mensaje devuelto coincida con el esperado para creación correcta y que se hayan invocado exactamente una vez la obtención del cliente y tres veces la obtención de productos. También es recomendable comprobar que se llamó a la creación del pedido en el repositorio y al commit de la unidad de trabajo.

Ejecución de pruebas

Desde la terminal, ejecuta el comando dotnet test en la carpeta de la solución. Si fuese necesario, especifica la solución con dotnet test PizzApp.sln. También puedes correrlas desde el explorador de pruebas de tu IDE.

Escenario 2: error por cantidad de ítem inválida

El servicio valida primero que ningún ítem tenga cantidad menor o igual a cero. Si encuentra uno, devuelve un resultado de error y no consulta repositorios ni persiste nada.

Arrange: creamos una solicitud con un solo ítem con cantidad igual a cero o un valor negativo.

Act: ejecutamos el método Execute.

Assert: comprobamos que el resultado indique error, que el mensaje corresponda a cantidad de ítem inválida y verificamos que los repositorios de clientes y productos no hayan sido invocados en absoluto. Para cubrir más casos con poco código, podemos parametrizar la prueba con el atributo TestCase, por ejemplo usando cero y un valor negativo.

Buenas prácticas adicionales

Aislar el dominio de infraestructura mediante interfaces facilita el mocking y acelera la ejecución de pruebas. Además, mantener mensajes de negocio consistentes, usar datos realistas en Arrange y verificar tanto el estado del resultado como las interacciones con dependencias aumenta la robustez del conjunto de pruebas.

Sobre Q2BSTUDIO

En Q2BSTUDIO desarrollamos aplicaciones a medida y software a medida con foco en calidad, escalabilidad, pruebas automatizadas y entregas continuas. Integramos prácticas de calidad en el ciclo de vida de desarrollo para acelerar el time to market y reducir riesgos. Si tu organización necesita llevar estas prácticas a producción con arquitecturas modernas y despliegues confiables, descubre cómo podemos ayudarte en nuestro servicio de desarrollo de software a medida. También impulsamos tu pipeline de QA y CI CD con iniciativas de automatización de procesos para ganar eficiencia y trazabilidad de extremo a extremo.

Competencias y palabras clave

Además de nuestra experiencia en pruebas unitarias con .NET 8, NUnit y Moq, somos especialistas en inteligencia artificial, ia para empresas y agentes IA, ciberseguridad y pentesting, servicios cloud aws y azure, y servicios inteligencia de negocio con power bi. Si buscas una alianza tecnológica que te acompañe desde el backend hasta la analítica avanzada, Q2BSTUDIO es tu compañero ideal.

Repositorio de referencia

Puedes revisar un proyecto de ejemplo con escenarios similares en el siguiente repositorio en GitHub.

Fin del artículo, inicio de la diversión
Construyendo software juntos

Dando vida a tus ideas desde 2008

Diseñamos aplicaciones móviles y de escritorio innovadoras que cumplen con tus requisitos específicos y mejoran la eficiencia operativa.
Más info
Cuéntanos tu visión
Sea cual sea el alcance, podemos convertir tu idea en realidad. Envíanosla y charlemos sobre tu proyecto o una colaboración futura.
Contáctanos
artículos destacados
Live Chat
Enviado correctamente.

Gracias por confiar en Q2BStudio