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 read • Q2BSTUDIO Team

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.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.

Live Chat