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 • Equipo 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?

Juega un momento antes de irte

NUESTROS SERVICIOS

Cómo podemos ayudarte

Inteligencia artificial

Agentes de IA, chatbots y asistentes inteligentes que automatizan tareas y atienden a tus clientes 24/7 para mejorar la eficiencia de tu negocio.

Más info

Desarrollo de software

Aplicaciones web, móviles y de escritorio, intranets, e-commerce, SaaS y plataformas de gestión diseñadas para las necesidades concretas de tu empresa.

Más info

Servicios cloud

Migración, infraestructura, hosting gestionado, alta disponibilidad y seguridad en Microsoft Azure y Amazon Web Services para que tu negocio escale sin límites.

Más info

Ciberseguridad y pentesting

Auditorías de seguridad, test de intrusión (pentesting) y protección de aplicaciones, datos e infraestructura on-premise y cloud, con hacking ético y cumplimiento normativo.

Más info

Business Intelligence

Cuadros de mando y análisis de datos con Power BI: integramos tus fuentes, diseñamos dashboards y KPIs y convertimos tus datos en decisiones.

Más info

Automatización de procesos

Automatizamos tareas repetitivas y conectamos tus aplicaciones con n8n, Power Automate, Make y RPA, eliminando trabajo manual y aumentando la productividad.

Más info

Formación para empresas

Formamos a tus equipos en tecnología con criterio: desarrollo web, bases de datos, Git, buenas prácticas y seguridad, automatización con n8n, inteligencia artificial para empresas y creación de soluciones de IA con Azure AI Foundry.

Más info

Auditoría de código

Auditamos el código que creas tú, tu equipo o una IA: te decimos qué está bien y qué mejorar, lo securizamos y lo dejamos listo para producción, web o app.

Más info

Generación de imágenes con IA

Creamos por ti las imágenes que necesita tu negocio con inteligencia artificial: producto, redes, publicidad, ilustración y avatares. Tú nos dices qué quieres y te lo entregamos listo para usar.

Más info

Generación de vídeos con IA

Creamos por ti vídeos con inteligencia artificial: promocionales, para redes, presentadores virtuales, doblaje y animaciones. Nos cuentas la idea y te lo entregamos montado y listo para publicar.

Más info

Avatares conversacionales con IA

Creamos avatares conversacionales con IA —humanos digitales con cara y voz— que atienden a tus clientes y equipos con el conocimiento de tu empresa, en tu web, monitores interactivos, WhatsApp o Teams.

Más info

Marketing Online e IA

Google Ads, Meta Ads, LinkedIn Ads y posicionamiento en motores de IA (GEO/AEO): captamos clientes y hacemos que tu marca aparezca donde te buscan, también en ChatGPT, Gemini y Perplexity.

Más info

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.

Live Chat