Me tomó mucho tiempo entender cómo se configuran las pruebas a un API usando Mocha. Encontrar un artículo que explique cómo Mocha y un marco ORM trabajan juntos para probar APIs fue un reto. Así que, quiero explicar lo que aprendí configurando estas pruebas.
API
API son las siglas de Application Programming Interfaces. En español significa interfaz de programación de aplicaciones. Es un intermediario que permite que las aplicaciones se comuniquen entre sí. Por ejemplo, tu aplicación puede enviar datos a la plataforma de Twitter a través del API de Twitter. También, puedes crear tu propio API para que otros consuman algunos de los datos de tu aplicación. Por esto, es esencial que se hagan pruebas; para que los datos manejados mediante el API sean confiables.
Mocha
Es un marco de prueba de javascript que funciona con NodeJS y los navegadores. Usaremos Mocha como herramienta para probar nuestro API.
Asignación de objeto-relacional (ORM)
ORM es la abreviatura de Object-Relational Mapping. En español significa asignación de objeto-relacional. Es una técnica de programación que convierte los datos que no son compatibles. El método crea una “base de datos virtual” usando un lenguaje de programación orientado a objetos (object-oriented). Los ORMs también proveen herramientas para las migraciones de base de datos. Migrar una base de datos se refiere a la transferencia de datos desde una base de datos a otra ó a múltiples bases de datos.
¿Cómo interaccionan el API, Mocha, y un ORM durante pruebas?
Las pruebas a un API tienen varios pasos críticos:
El ORM maneja los modelos para crear la base de datos para pruebas. Cuando se modelan los archivos de migración similares a los modelos de la base de datos para desarrollo, creamos una base de datos similar a la de desarrollo. Esta la podemos utilizar para probar. Los seeder files del ORM completan la nueva base de datos con datos para pruebas predeterminados.
Las pruebas, manejadas por Mocha, se ejecutan después de crear la base de datos e inician con la función before(). Esta función se llama antes de ejecutar las pruebas al API para definir los estados iniciales de los casos de pruebas.
Luego de definir los estados iniciales, Mocha ejecuta las pruebas al API. Cuando las pruebas al API son completadas, Mocha ejecuta la función after() para definir el estado final de la base de datos luego de las pruebas. La función after() es donde usualmente se borra ó “limpia” la base de datos. Puedes seguir este enlance (en inglés) para más información acerca del ciclo de pruebas de Mocha.
Configurando Pruebas al API
Vamos a asumir algunas cosas durante este ejercicio:
- Los usuarios solamente pueden actualizar sus datos cuando tienen acceso (logged in) a la plataforma.
Construir una base de datos para pruebas
- Siguiendo la documentación del ORM de tu proyecto, genera un nuevo archivo de migración para un modelo. Digamos que el modelo será el Usuario.
- Modifica el archivo de migración similar al modelo Usuario de la base de datos para desarrollo.
- Ejecuta la migración para generar una base de datos para pruebas basada en el modelo Usuario.
- Confirma que el modelo Usuario se observe en la base de datos para pruebas.
- Crea y modifica los seeder files del ORM definiendo los valores iniciales del modelo Usuario.
- Ejecuta los seeders para añadir los valores iniciales del modelo Usuario a la base de datos para pruebas.
Repite los pasos anteriores para terminar de construir la base de datos para pruebas similar a la base de datos para desarrollo. Esto asegura que los resultados de las pruebas reflejarán el estado actual de la base de datos para desarollo. El API esta listo para ser probado una vez se termine de construir la base de datos para pruebas.
Pruebas al API
Anteriormente, describimos el ciclo de pruebas que sigue Mocha. El ciclo comienza con la función before() para inicializar el estado de la prueba. Es requerido que el usuario tenga acceso a la plataforma para actualizar información. Así que before() es la función donde creas el usuario y el usuario tiene acceso a la plataforma. Luego, es que se prueba el API mediante la actualización de datos. Se puede crear el nuevo usuario y enviar la solicitud de acceso antes de probar el API usando el ORM.
Mocha provee métodos para ejecutar pruebas de forma asincrónica y sincrónica. Los casos de pruebas incluyen solicitudes del API a la base de datos en vez del ORM. Así que, si el caso de prueba evalúa las actualizaciones de datos de Usuario, la prueba debe de consistir en crear un usuario mediante una solicitud al API seguido de la solicitud al API para actualizar el usuario recién creado.
Se espera que se borre la base de datos luego de terminar las pruebas al API. Esta expectativa es algo que no sabía cuando estaba aprendiendo sobre pruebas. Así que, ¡imagine cuan confundida estaba leyendo sobre la función after()! Puedes definir after() usando el método de borrar/destruir del respectivo ORM para borrar la base de datos.
¡Gracias por leer!
Puedes obtener notificaciones de nuevos artículos directamente a tu buzón electrónico registrándote en el siguiente enlace.
Artículos relacionados
Los siguientes artículos de CTRL-Y están relacionados a este escrito. ¡Deberías de echarles un vistazo!:
- Arquitectura de capas para NodeJS
- Filtrando con GraphQL y Prima: Que NO hacer
- Cómo practicar la resolución de problemas para el desarrollo web sin escribir código
- Recursos para programadoras web novatas
- 5 razones por las cuales las muejeres deben de considerar una carrera en desarollo web
- Ingeniería industrial y Desarrollo web
Punto Aparte – Un listado de reproducción para ti
Un amigo me compartió esta reproducción del 25 aniversario de Mira Kater y ¡me encantó instantáneamente! He estado recurruiendo a este set durante los pasados meses cuando necesito hiper-enfocarme en varias tareas. Es mayormente un chill, deep house que te mantiene en movimiento continuo.