Del curso: Domina Go: Test de código

Solicitar un contenedor en la librería Testcontainers - Tutorial de Go

Del curso: Domina Go: Test de código

Solicitar un contenedor en la librería Testcontainers

En testcontainers-go tenemos una struct que nos permite definir todas las características de un contenedor Docker, como la imagen a utilizar, los puertos a exponer, las variables de entorno, los ficheros a copiar, el comando principal del contenedor, entre otros. Esta struct se llama GenericContainerRequest y se utiliza en el método GenericContainer. Este método nos retorna un contenedor y un error, y vamos a poder limpiar el contenedor con este método auxiliar CleanupContainer, que necesita el paquete testing para ejecutarse. Una vez arrancado el contenedor, podemos llamar a los métodos Stop y Terminate del mismo, así como otros métodos que nos permiten interactuar con el contenedor, como por ejemplo, Logs, que nos permite obtener los logs del contenedor. Es importante conocer que Testcontainers expone los puertos del contenedor en un puerto aleatorio del host, de manera que no haya conflictos con otros contenedores que estén corriendo en el mismo host. Esto permite arrancar contenedores del mismo tipo en paralelo, lo cual agiliza el testing en nuestros proyectos. Para obtener ese puerto aleatorio, podemos utilizar el API de Testcontainers con el método MappedPort del contenedor creado. Podemos utilizar este método, por ejemplo, para calcular la cadena de conexión a un contenedor de base de datos. Te recomiendo que consultes la documentación oficial de testcontainers-go para descubrir todas las posibilidades que nos ofrece esta librería.

Contenido