Mock and Stub – Hacer stub a método que tienen parámetros por referencia

La sintaxis de RhinoMocks constraints para aplicar en Stub o Expect a veces puede resultar compleja. Su documentación es bastante completa pero en algunos casos dificil de seguir o implementar.

A continuación te dejo una breve entrada sobre cómo puedes resolver la papeleta de hacer stub sobré métodos que tienen parámetros por referencia, esto puede resultarte útil tanto para unit test de tu capa de dominio, como para flow expectation test de tu capa de servicio.

Leer más…

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…