Pruebas de Servicios en .NET 8 con NUnit y Moq

Guía de pruebas unitarias en .NET 8 con NUnit y Moq para un servicio de creación de pedidos: casos de éxito y error por cantidad de ítems y repositorios simulados.

1 sept 2025 • 4 min de lectura • Equip Q2BSTUDIO

Inteligencia-Artificial-

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.

UNA PAUSA?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Intel·ligència artificial

Agents d'IA, chatbots i assistents intel·ligents que automatitzen tasques i atenen els teus clients 24/7 per millorar l'eficiència del teu negoci.

Més info

Desenvolupament de programari

Aplicacions web, mòbils i d'escriptori, intranets, e-commerce, SaaS i plataformes de gestió dissenyades per a les necessitats concretes de la teva empresa.

Més info

Serveis cloud

Migració, infraestructura, hosting gestionat, alta disponibilitat i seguretat en Microsoft Azure i Amazon Web Services perquè el teu negoci escali sense límits.

Més info

Ciberseguretat i pentesting

Auditories de seguretat, test d'intrusió (pentesting) i protecció d'aplicacions, dades i infraestructura on-premise i cloud, amb hacking ètic i compliment normatiu.

Més info

Business Intelligence

Quadres de comandament i anàlisi de dades amb Power BI: integrem les teves fonts, dissenyem dashboards i KPIs i convertim les teves dades en decisions.

Més info

Automatització de processos

Automatitzem tasques repetitives i connectem les teves aplicacions amb n8n, Power Automate, Make i RPA, eliminant treball manual i augmentant la productivitat.

Més info

Formació per a empreses

Formem els teus equips en tecnologia amb criteri: desenvolupament web, bases de dades, Git, bones pràctiques i seguretat, automatització amb n8n, intel·ligència artificial per a empreses i creació de solucions d'IA amb Azure AI Foundry.

Més info

Auditoria de codi

Auditem el codi que creguis tu, el teu equip o una IA: et diem què està bé i què millorar, el securitzem i el deixem llest per a producció, web o app.

Més info

Generació d'imatges amb IA

Creem per tu les imatges que necessita el teu negoci amb intel·ligència artificial: producte, xarxes, publicitat, il·lustració i avatars. Tu ens dius què vols i t'ho lliurem llest per fer servir.

Més info

Generació de vídeos amb IA

Creem per tu vídeos amb intel·ligència artificial: promocionals, per a xarxes, presentadors virtuals, doblatge i animacions. Ens comptes la idea i t'ho lliurem muntat i llest per publicar.

Més info

Avatars conversacionals amb IA

Creem avatars conversacionals amb IA —humans digitals amb cara i veu— que atenen els teus clients i equips amb el coneixement de la teva empresa, a la teva web, monitors interactius, WhatsApp o Teams.

Més info

Màrqueting Online i IA

Google Ads, Meta Ads, LinkedIn Ads i posicionament en motors d'IA (GEO/AEO): captem clients i fem que la teva marca aparegui on et busquen, també a ChatGPT, Gemini i Perplexity.

Més info

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.

Live Chat