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…

Cómo hacer Unit Test sobre EF DbContext

En anteriores entradas he presentado mecanismos para hacer Unit Test sobre métodos de lógica genéricos, que suelen ubicarse en una capa de dominio, y Flow Expectation Test sobre la capa de servicio. Ahora voy a presentarte la manera de hacer Unit Test sobre tu capa de datos.

En esta entrada presento una arquitectura que usa un patrón de diseño con Unit Of Work y Reposity Pattern. En esta otra entrada escribí sobre Rhino Mock como una de mis librerías favoritas para Unit Testing. Ahora voy a combinar ambas para hacer unit test a tus métodos de Unit Of Work, pudiendo simular una colección de datos en memoria como si de un acceso a base de datos se tratase, de forma que puedas probar tus métodos con consultas linq y testear así su resultado, siendo capaz de aproximarte cada vez al valioso TDD del que hablo en esta entrada.

Leer más…

Flow expectation test con Rhino Mocks – Parte 2

En la primera entrada sobre Rhino Mocks presento una primera aproximación a los flow expectation test. En esa entrada hablo sobre validar que todas las llamadas a otros métodos son realizadas por el método que deseas probar. En ese caso se esta utilizando una misma interfaz, por lo tanto los flow expectation test son bastante sencillos. Esta situación no siempre se va a dar, tendrás muchos casos donde tus servicios llamen a métodos de distintas interfaces, y te será necesario combinar diferentes mocks para hacer este tipo de test, en esta entrada te presento como hacerlo con Rhino Mocks.

Leer más…

Flow expectation test con Rhino Mocks – Parte 1

En varias de mis entradas sobre unit testing hablo sobre la potencia de esta librería de rhino mocks para hacer unit test, como en ésta sobre herramientas para unit test. Pero no solo sobre unit test debe sustentarse tu aplicación.

Hay otro tipo de test para probar el flujo de tu lógica de negocio, que son los culpables de que tome mi decisión sobre usar esta librería rhino mocks sobre otras librerías de testing. Sobre este tipo de test hablo en una entrada reciente, dando motivos para implementar este tipo de test y una arquitectura que los permita.

En esta entrada voy a entrar al detalle de como usar rhino mock para hacer diferentes flow expectation test. 

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…