Probar servicios (Obsoleto)

circle-exclamation

Los servicios DEBERÍAN probarse principalmente usando pruebas de API, es decir, un conjunto de pruebas que ejercitan el código del servicio a través de su API poniendo el servicio en funcionamiento, con sus dependencias externas siendo simuladas (bases de datos y APIs). Prueba unitaria DEBERÍA incluirse en los casos donde se encuentren secciones utilitarias de código con un gran número de casos a ejercitar o código no eficiente, lo que hace imposible o difícil probar con pruebas de API. La razón es que, debido a nuestra arquitectura de microservicios, que reduce las responsabilidades y por tanto la cantidad de código a probar, la lógica de los servicios es simple, haciendo que las pruebas de API sean la opción con mejor tiempo por valor al asegurar que los servicios funcionan correctamente.

Stack de pruebas

Los servicios DEBEN ser probados usando Jestarrow-up-right como el framework de pruebas principal con supertestarrow-up-right como el framework para levantar el servidor y probarlo.

Estructura de directorios

Como los servicios PUEDEN tener tanto pruebas de API como pruebas unitarias, habrá más de un lugar donde irán las pruebas:

  • Las pruebas unitarias DEBEN ir junto al archivo o módulo que están probando, con el mismo nombre, pero con la extensión spec.ts en lugar de ts.

  • Las pruebas de API ejercitarán el código a lo largo del servicio, por lo que DEBEN colocarse en un directorio de prueba , en la ruta raíz. Los archivos serán nombrados como el recurso del servicio que estarán probando, es decir, si las pruebas de API estarán probando el recurso books, usualmente bajo /books, el nombre del archivo DEBE ser books.spec.ts y DEBE colocarse en el directorio de prueba directorio.

Qué probar

  • Middlewares aplicados a la ruta (auth, etc.), para asegurar que la ruta funciona como se espera.

  • La lógica de los controladores, para asegurar que la ruta hace lo que esperamos que haga.

Pruebas de API para servicios

Como se mencionó antes, las pruebas de API se harán usando Jest y supertest.

Para ilustrar cómo un desarrollador hará pruebas de API, tenemos el siguiente ejemplo:

Encontramos en el ejemplo una ruta con diferentes métodos HTTP, GET y POST. Ambos endpoints se refieren al mismo recurso, books, por lo que un archivo, nombrado books.spec.ts DEBE ser creado bajo el directorio de prueba directorio para contener las pruebas para ellos.

Todas las rutas y los diferentes flujos de ejecución DEBEN ser probados minuciosamente. Estos son los casos que el desarrollador DEBE probar para estos endpoints:

  • Solicitar todos los libros funciona, respondiendo con un 200 y la lista de todos los libros.

  • Solicitar todos los libros de un autor dado funciona, respondiendo con un 200 y la lista de todos los libros de ese autor.

  • Publicar un libro sin autenticación falla, respondiendo con un 401 y un mensaje de error.

  • Publicar un libro autenticado funciona, respondiendo con un 200 e insertando el libro.

Estos casos definitivamente obtendrán sus its y la expectativa de esos its DEBE contener al menos el estado de respuesta esperado y qué se espera en el cuerpo de la respuesta (si lo hay).

Así es como estas pruebas de endpoints deberían escribirse:

Última actualización