Testing Colombia

Testing con calidad

Automatizacion, Comunidad

Inyección de dependencias con proposito de pruebas unitarias

Rompiendo Dependencias:

Este ejemplo tiene dos partes, la primera va enfocada a explicar en un sencillo ejemplo de romper dependencias externas.

la segunda parte enfocada a una inyección de dependencias por parámetro con proposito de pruebas unitarias.

Vamos a suponer que tenemos este método, el cual se encarga de recibir un identificador «id» y validar si en la base de datos se encuentra la información de un usuario asociado a dicho identificador. En el caso positivo la respuesta sera «true» y en caso opuesto sera «False»:

La idea es poder extraer en una clase independiente la funcionalidad de «ReadUserInfoFromDB» que se encarga de buscar en la base de datos la información del usuario así:

Adicionalmente vamos a crear una interfaz de la clase DataReader:

Ahora en la clase InformationService vamos a romper la dependencia recibiendo como parámetro una instancia de IDataReader.

El siguiente paso es modificar la forma es que usamos la llamada al método «ReadUserInfoFromDB» como se muestra en la linea 15:

Usando Inyección de dependencias para test unitarios:

Ahora vamos a implementar un test para mostrar como creando un mock del método vamos a evitar hacer uso de la dependencia con la base de datos, para poder hacer pruebas unitarias. Lo primero es en el proyecto de pruebas asociado se crea un fake de la clase DataReader, la cual va a devolver null con el proposito de probar parte de la implementacion de la clase InformationService :

Ahora la idea es crear el test haciendo uso del Fake anterior que se ha creado y usarlo como parámetro a la hora de hacer uso de la clase
InformationService :

Finalmente podemos ver que el test esta haciendo una inyección de dependencia en la linea 70, de esta manera usando un fake o implementaciòn falsa evitamos el acceso a la base de datos.

En este LINK tienes acceso a la solución en git para mas detalles.

Deja un comentario

Tema creado por Anders Norén