En anteriores entradas he escrito sobre qué son los unit test y su importancia. También lo he hecho sobre cómo preparar tu entorno para hacer unit test y por qué usar la librería rhino mock. Así que ahora ha llegado el momento de explicar como ejecutar tus unit test para comprobar sus resultados.
Mes: abril 2017
Unit of Work, Repository y Entity Framework Code First
En esta entrada voy a hablar un poco sobre una arquitectura para la capa de datos que a mi me esta funcionando muy bien. Se trata de aplicar el patrón Unit Of Work junto al Repository Pattern y Entity Framework Code First para crear una capa de acceso a datos totalmente desacoplada de la capa de negocio, de forma que nuestro modelo de aplicación y las capas superiores no se vean afectadas por un cambio en la tecnología utilizada para acceso a datos.
Cómo habilitar autenticación OAuth en swagger
Para usar servicios de tu WebApi autenticados swagger usa por defecto un input para usar un Api key. Pero lo mas probable es que en tu proyecto WebApi estés utilizando autenticación mediante usuario y contraseña para obtener un jwt token, para posteriormente utilizar el token con un header Authorization bearer token.
Si quieres saber como configurar esta característica para usar bearer token desde swagger para poder consumir endpoints con este token, estás en la entrada que necesitas.
Cómo instalar swagger en tu WebApi
Los proyectos crecen, los endpoints se multiplican, las funcionalidades se extienden, y el legacy code llega con el tiempo.
Documentar adecuadamente tu WebApi es crucial para no acabar con un montón de servicios que con el tiempo se terminen convirtiendo en cajas negras. Si llega este momento, incluso a veces te planteas si escribir un nuevo endpoint en lugar de editar uno existente que ni recuerdas qué hacía.
Configura Swagger y comienza a disfrutar del placer de probar tu Api en cuanto expones el servicio, así como disfrutaras de autodocumentar sus propiedades.
¿Qué es swagger?
Si estas buscando la forma de documentar tu API, swagger es lo que buscas, es justamente eso.
Swagger es un framework para documentar APIs Rest desde muy diferentes fuentes: Archivos de configuración, XML, C#, Javascript, Ruby, PHP, Java, Scala… además existen multitud de módulos que te pueden ayudar a integrarlo en tu proyecto.
NUnit, ¿Por qué esta librería?
En una entrada anterior sobre herramientas para unit testing recomiendo usar esta librería, aquí justificaré y explicaré muy rápidamente algunas de las razones, como siempre estoy acostumbrando a hacer en mis entradas, aportando ejemplos prácticos, que para buscar teoría y documentación ya hay bastante fuentes.
Test Driven Design – TDD
El diseño dirigido por test cada vez tiene mas importancia y poseer esta skill es cada vez más valorado. En la actualidad la realización de unit test casi siempre se relega a un segundo plano, y se hace aprisa y corriendo si sobra algo de tiempo en cada release, o se pasa de puntillas sobre este tema para cubrir el expediente como algo burocrático que hay que escribir.
Si se hace una buena batería de test, con sentido, de forma que el código quede bajo cobertura de los test, y los test cubran a su vez las posibles casuísticas, tu aplicación tendrá una muy alta probabilidad de evitar o detectar bugs, de ser mantenible, confiable, de no tener miedo a introducir cambios o mejoras en el código porque tus test detectarán tus errores.
Todo esto estará conseguido si sigues TDD, ya que como voy a explicar, todo tu código se soportará sobre test creados con anterioridad.
¿Qué es un mock y un stub?
Hay muchos blogs y mucha literatura que dan deficiones sobre Mocks, Stubs, Fakes, Dummies… En esta entrada voy a recurrir a las definiciones que da Martin Fowler y voy a tratar de mostrar unos ejemplos prácticos usando Rhino Mock.
Rhino Mock ¿Por qué esta librería?
El mundo del unit testing presenta una gran cantidad de librerías que puedes utilizar para abordar tus tests. Entre las mas utilizadas están las nativas de Microsoft, NUnit, Moq, Rhino Mock…
Tras haber usado en mi entorno laboral librerías nativas de Microsoft, Moq, Rhino Mock y Nunit, me he decidido por combinar estas dos ultimas con mayor frecuencia, y en esta entrada te explico por qué ha sido así.
Herramientas para Unit Test
Si ya has leído la entrada sobre ¿Qué son los Unit Test? probablemente te habrás fijado en un Data Annotation que hay sobre el método de test, llamada precisamente [Test]. En esta entrada explico su utilidad y por qué debe estar ahí, preparando nuestro framework para hacer unit test.