Testear cambios
Poder probar los cambios que hacemos en local es una habilidad absolutamente esencial y por eso vamos a dedicarle una página explícitamente a las diferentes formas que tenemos de poder ver nuestros cambios.
Ejecutar los unit tests con vscode
Si estamos desarrollando unit tests de C# el propio editor nos ofrece opciones para ejecutar los tests que podemos aprovechar.
Primeramente casi siempre vamos a necesitar interactuar con la base de datos, así que la encendemos en background primero:
dc up -d database
Luego entramos en el fichero que estamos modificando y veremos opciones como éstas:
{class="mx-auto"}
Vemos que tenemos Run All Tests a nivel de la clase y Run Test a nivel de cada método de testeo individual. Si los pulsamos se ejecuta el tests en el momento.
También existen Debug All Tests y Debug Test si queremos abrir el depurador integrado de Visual Studio Code si es nuestro modo de depuración preferido.
Por último desde la configuración del editor podemos configurar accesos directos a todas estas opciones desde el teclado para por ejemplo pulsar F5 o F6 y que se ejecuten directamente.
Ejecutar todos los tests de una app
Podemos ejecutar desde consola todos los unit tests de C# de una app utilizando los comandos propios de .NET SDK. Contrariamente al resto de comandos que se ejecutan sobre el root, para este comando debemos entrar en la carpeta concreta para facilitar el código:
cd AZPool.Users
Luego podemos ejecutar todos los tests una vez:
dotnet test
También podemos abrir un proceso que se queda escuchando y re-ejecuta todos los tests cada vez que un fichero cambie:
dotnet watch test
Ejecutar todos los tests enteros
Podemos ejecutar todos los tests de todas las apps a la vez tal y como hace Jenkins para revisar los nuevos commits. Esto es especialmente útil cuando estamos haciendo refactorizaciones que afectan a varias aplicaciones o modificamos cosas de Core por ejemplo.
Ejecutamos con make:
make test
Abrir en el navegador
Podemos testear en local la aplicación que estemos desarrollando para ver comportamientos más avanzados y tener un bucle de feedback más rápido.
Lo primero que necesitamos es abrir en background el servidor central de todas las APIs y la base de datos:
dc up -d database caddy
Luego abrimos la aplicación que nos interese testear:
dc up users
Con esto podemos abrir un navegador y consultando la tabla de puertos entrar al de tipo HTTP en nuestro navegador habitual.
Es posible que si no introducimos la dirección correcta correspondiente a la API que queremos probar nos devuelva una página de error en Chrome que es algo extraña, pero que si la leemos nos dice que es un 404 de un error de página no encontrada.
Alternativamente podemos abrir todas las aplicaciones y la infraestructura completa en conjunto, aunque esto requiere de más recursos y tiempo:
make serve
Utilizar línea de comandos
Abrimos la aplicación de la misma forma que para un navegador, pero en vez de entrar por el navegador podemos utilizar aplicaciones como las siguientes para probar:
- HTTPie: Recomendada, https://httpie.org/
- cURL: https://curl.haxx.se
Por ejemplo con HTTPie podemos usar los siguientes comandos:
http https://localhost:8001/permissions
http -v https://localhost:8001/permissions
echo '{"name": "foo"}' | http -v POST https://localhost:8001/permissions
Utilizar aplicaciones auxiliares
Por último tenemos la ayuda de aplicaciones especializadas en las pruebas de APIs. Abrimos la aplicación de la misma forma que para un navegador, pero en vez de entrar por el navegador podemos utilizar recursos como los siguientes para probar:
- Hoppscotch.io: Recomendada, https://hoppscotch.io/
- Postman: https://www.postman.com/
En estas herramientas podemos a través de la interfaz montar peticiones HTTP de todo tipo: GET, POST, PUT, DELETE; y con todo tipo de cabeceras y combinaciones para las pruebas.