O qué archivos quieres copiar, o si quieres seguir programáticamente los registros del contenedor y así sucesivamente. Así que puedes configurar todo desde tus pruebas de aplicación, desde tu IDE. Y no necesitas, puedes, puedes hacer esto cualquier número de veces. Así que las pruebas traen su propio entorno al juego. Y también se integra con varios frameworks y bibliotecas de pruebas.
Por ejemplo, hay un módulo para Jest test containers, que simplifica el trabajo con Jest test, y test containers, donde puedes especificar declarativamente qué containers quieres, por ejemplo. Testcontainersnode, como las otras implementaciones de test containers, es un proyecto de código abierto. Christian es un verdadero héroe de la implementación de testcontainersnode, el principal mantenedor actualmente. Hay un paquete npm, que es cómo obtienes test containers en tu aplicación. Y lo que hace, utiliza docker-node para hablar con el entorno docker, así que tu entorno docker no necesita ser ninguna implementación docker en particular. Por supuesto, funciona con Docker Desktop, pero también puede funcionar con cualquier otra implementación docker compatible. Así que, por ejemplo, si estás ejecutando Minikube, el ligero clúster de Kubernetes que expone la API de Docker, puedes usar eso para ejecutar tus pruebas basadas en test containers. O si estás usando un Docker remoto, tus test containers pueden hablar con eso. Y internamente en Atomic Jar, estamos construyendo la solución cloud, donde puedes obtener una VM bajo demanda y ejecutar tus pruebas de test containers contra eso. Así que es una configuración muy, muy flexible, y funciona realmente bien.
Una cosa que es muy importante aquí es que test containers se encarga de la limpieza de los containers. Sabemos que para pruebas de integración confiables, necesitas tener un entorno repetible, y para eso, siempre quieres limpiar después de la ejecución. Eso significa que si tus pruebas pasan, limpiamos los containers y los eliminamos. Si tus pruebas fallan, limpiamos los containers y los eliminamos. Si tu máquina funciona con un entorno Docker remoto y tu máquina se bloquea, como si Internet explotara, todavía limpiaremos los containers en el host Docker remoto. Eso significa que nunca estarás en una situación en la que tu prueba se conecte a la instancia de Kafka que iniciaste hace dos semanas y que por alguna razón está persistiendo en tu potente máquina CI. Y luego porque los problemas que surgen de eso son realmente, realmente difíciles de reproducir e increíblemente difíciles de debug y arreglar. Así que las bibliotecas de test containers intentan empujarte en la dirección correcta con las pruebas de contenedores de prueba para permitir la paralelización de las pruebas de manera agradable, para empujarte a usar la API correcta, para hacer la limpieza en todo momento. Y en general, es un enfoque muy, muy popular.
Además de ser una buena biblioteca por sí misma, test containers viene con un ecosystem de los modules donde las tecnologías populares tienen una pequeña implementación, pequeñas bibliotecas, pequeños modules, que especifican y codifican cómo ejecutar esa tecnología particular en tu code. Así que no tienes que averiguar qué necesitas hacer para ejecutar Cassandra en un contenedor Docker o Kafka en un contenedor Docker, pero puedes simplemente usar la API y especificar, dame un contenedor Kafka, dame un contenedor MongoDB, y obtendrás una instancia de eso inmediatamente para ti, lo cual es genial porque eso te permite concentrarte en la lógica de negocio real de tus tareas sin gastar tiempo en averiguar la infraestructura, porque eso es gestionado por task containers. Y no es sólo un proyecto de nodo, ¿verdad? Task containers es bueno las pruebas de integración son necesarias en cualquier ecosystem de cualquier lenguaje de programación. Así que lo que puedes hacer, puedes tener el enfoque similar en tu aplicación Java, en tus aplicaciones .NET, en tu aplicación Go, hay Python, hay task containers Rust. Así que es un enfoque de ingeniería muy, muy popular. Y ahora me gustaría mostrarte un poco cómo se siente tener tareas y cuáles son los bloques de construcción de la API que necesitas conocer para ser productivo con task containers.
Comments