Información sobre los tests
¿Qué es lo que se está testeando?
En este proyecto se están testeando tanto la clase de gestión como la API REST definida.
La clase de gestión es la que se encarga de realizar las comunicacines entre la API REST y la estructura de datos principal. De esta forma, se desacopla la API de la estructura de datos como tal, delegando responsabilidad a una clase que ya se encargará de realizar las operaciones adecuadas sobre una colección de la estructura de datos. Sobre esta clase se están realizando tests unitarios, para probar que cada funcionalidad responde de forma correcta.
La API REST es la que se encarga de recibir peticiones con las cabeceras HTTP correspondientes y de devolver la respuesta que toca. Para ello, utiliza la clase de gestión como se ha comentado anteriormente. Por tanto, en este caso, se están haciendo tests de integración entre la API REST y la clase, en vez de tests unitarios.
La clase de gestión ofrece métodos para guardar vocabulario, borrarlo, recuperar vocabulario por una combinación de palabra y tipo, recuperar vocabulario por tipo o modificar la descripción del vocabulario. La API REST decora esta funcionalidad y la expone para que pueda ser accedida mediante las peticiones HTTP correspondientes: PUT para crear, GET para recuperar, POST para modificar y DELETE para eliminar. Cada uno de los elementos anteriores se prueba en los tests, y no se condiera que funciona correctamente hasta que no los ha pasado todos.
Adicionalmente a todo lo anterior, la API REST permite obtener el estado del microservicio. Esta funcionalidad, a pesar de no encontrarse dentro de los requisitos como tal del microservicio, se ha implementado y se ha testeado para ver que funciona correctamente.
¿Cómo se están llevando a cabo los tests?
Clase de gestión
En el caso de la clase de gestión, se están realizando tests sobre cada uno de los métodos que ofrece la clase. Estos tests se pueden ver aquí.
Se prueba cada método de la clase una serie de veces, viendo que por ejemplo cuando se le pasa información correcta no lanza ninguna excepción, o que cuando esta es incorrecta (por ejemplo, el tipo pasado no es uno de los soportados, o la descripción que se le pasa no tiene el formato correcto o el vocabulario como tal no existe), se lanzan las excepciones correspondientes, las cuáles serán procesadas luego por la API REST para devolver una u otra respuesta.
API REST
En el caso de la API REST, se prueba que las peticiones devuelvan las respuestas esperadas. Estos tests se pueden ver aquí.
Por ejemplo, se testea que al pasar información correcta devuelva un 2XX (el código depende de lo que se esté haciendo), que se devuelva un 400 si los parámetros que se pasan son incorrectos, o un 404 cuando se busca un recurso que no exista. Para determinar si hay o no errores se utilizan las excepciones que se generan en la clase de gestión, las cuáles son tratadas por la API.
Cada método se prueba una serie de veces, probando cada posible caso de respuesta, hasta haber cubierto cada una de estas respuestas.