Mock and stub – Sobre arquitecturas de UnitOfWork con Reposity pattern

Una de mis primeras entradas al crear este blog, fue sobre una arquitectura sobre la capa de datos usando Unit Of Work, Repository Pattern y EntityFramework Code First, con el objetivo de desacoplar tu capa de datos del resto de las capas de tu aplicación donde está contenida la lógica, servicios, negocio…

Un objetivo derivado, al conseguir este desacople, es poder aplicar Mocks y Stubs sobre tu capa de datos. Mock a estas clases de unit of work y repository, haciendo stub sobre sus métodos de forma que los unit test sobre las capas superiores se mantengan siendo atómicos, independientes de la capa de datos, y por tanto mucho más rápidos que si deben acceder a estos datos. Esto por otra parte facilita una aproximación F.I.R.S.T de los unit test como menciono en otra entrada.

Leer más…

Trabajando con fechas UTC en C#

Parece algo trivial manejar las fechas y horarios en tu código a partir de DateTime o DateTimeOffset, pero pueden existir algunos casos donde el manejo de fechas puede traducirse en una pequeña pero molesta cantidad de errores o imprecisiones no deseadas, según el fin al que este destinado tu aplicación, y la geolocalización de los usuarios que la usen.

¿Alguna vez te has planteado en que zona horaria esta localizado el servidor que ejecuta tu código una vez lo despliegas a la nube? ¿En que podría afectar eso a la comparación de fechas para determinar aspectos sensibles de tu lógica? En esta entrada voy a profundizar en todo ello.

Leer más…

Error de serialización con objetos que aplican herencia.

Recientemente me he encontrado con un error al comunicar un objeto entre dos sistemas aplicando NServiceBus. Me ha resultado bastante curioso y creo que merece la pena una entrada para andarse con ojo con el tipo de asignación que hacemos entre objetos que aplican herencia entre sí.

A continuación te explico cuál es el problema. 

Leer más…

Flow expectation test como parte de tus unit test.

En mi entrada sobre porque usar la librería Rhino Mock para unit test explico brevemente su utilidad para testear el “qué” hace un método o tu SUT (Sistem under test). A este “probar el qué” hace una función, sin entrar a los detalles técnicos sobre como cumple con su función se le puede conocer como test de flujo esperado o flow expectation test. En esta entrada te hablo sobre sus ventajas y su importancia.

Leer más…

Cómo documentar un servicio con swagger y summary.

Continúo la serie de entradas sobre swagger como herramienta para documentar tus APIs.

En anteriores entradas he escrito sobre cómo configurarlo para una documentación básica de un endpoint, con lo que apenas conseguirás darle una funcionalidad básica y disponer del tipo de verbo Http y parámetros recibidos o respuestas devueltas. También he escrito sobre cómo utilizarlo con autenticación basada en bearer token, OAuth, lo cual es vital para probar desde swagger una API con este mecanismo de seguridad.

Ahora voy a explicarte como añadir documentación sobre la funcionalidad que tu endpoint expone, permitiéndote reflejar en una frase su comportamiento. 

Leer más…