Archivo de la etiqueta: Integración Continua

Rompiendo los limites: Mocking en las Pruebas Unitarias .Net

Mocking

Hoy por fin os traigo la unión entre las Pruebas Unitarias y la Inyección de Dependencias, el “Mocking“. ¿Que es el “Mocking” te preguntarás?, pues es la técnica utilizada para simular objetos en memoria con la finalidad de poder ejecutar pruebas unitarias. Esto, es especialmente útil cuando utilizamos recursos externos como bases de datos o servicios de mensajería, o cualquier cosa en general que no queramos o no podemos ejecutar durante las pruebas unitarias. Sin mas preámbulos, ¡vamos con ello! En primer lugar, he reutilizado el proyecto Entity Framework Core “Code First” para partir de tener el contexto de datos creado. Ademas, he añadido una clase “GeneradorInformes” (la cual cumple el patrón de Inyección de Dependencias en el constructor) y una clase “EmailSender” que implementa la interfaz “IEmailSender”: Proyecto //IEmailSender.cs namespace PostMocking.Model { public interface IEmailSender { bool Enviar(string Destinatario, string Mensaje); } } //EmailSender.cs namespace PostMocking.Model { public class EmailSender : IEmailSender { public bool Enviar(string Destinatario, string Mensaje) { //{…} return true; } } } //GeneradorInformes.cs using Microsoft.EntityFrameworkCore; using PostMocking.Data; using System.Linq; using System.Text; namespace PostMocking.Model { public class GeneradorInformes { //Propiedad con la dependencia private IEmailSender emailSender { get; set; } private PostMockingDbContext context { get; set; } public… Leer más »

Venciendo el miedo a las pruebas unitarias en .Net

Test Unitario

Otro día más por aquí, y hoy vengo a hablaros de las “Pruebas Unitarias”. Las pruebas unitarias son herramientas de testing para asegurar que nuestro código no cambia su funcionalidad pese a que hagamos cambios en él. Es decir, imaginemos que tenemos una librería matemática con unas operaciones simples:   Como se puede ver, es una clase muy simple de ver, entender, y probar su funcionamiento pero… ¿Que pasaría si una de estas operaciones básicas fallase por un cambio no comprobado? Pues probablemente, no pensaríamos que algo tan simple puede estar fallando… y eso que podemos haberlo cambiado incluso sin darnos cuenta… Para evitar ese tipo de fallos, existen este tipo de herramientas, cuya finalidad es que, ante unos datos de entrada conocidos, si todo va bien, tenemos que tener unos datos de salida que podemos predecir y comprobar. Pruebas Unitarias en Net Framework Como habitualmente, crearemos un proyecto de consola: Y en el introduciremos la clase ProcesadorMatematico de la que acabamos de hablar. Una vez hecho eso, vamos a crear un nuevo proyecto en la solución, pero esta vez de pruebas unitarias: Con esto, veremos que se nos crea un proyecto nuevo dentro de la solución, con una clase por… Leer más »