sql >> Base de Datos >  >> NoSQL >> MongoDB

Pruebas de integración con Testcontainers + Quarkus + MongoDB

No puedo decirlo con certeza sin ver su configuración de prueba, pero supongo que funciona con docker run y no Testcontainers porque docker run expone un puerto fijo (siempre 27017) pero Testcontainers expondrá el puerto 27017 como puerto aleatorio (para evitar conflictos de puerto en máquinas de prueba).

Para usar Testcontainers con una prueba de Quarkus, sus pruebas deben seguir este flujo:

  1. Contenedores de inicio. Esto es necesario porque el puerto expuesto al azar para MongoDB solo se puede conocer después el contenedor ha sido iniciado.
  2. Obtenga puertos aleatorios de Testcontainers después de que se inicien los contenedores, luego establezca cualquier propiedad de configuración de prueba que dependa de los puertos del contenedor. Por ejemplo:

    static GenericContainer mongodb = new GenericContainer<>("mongo:4.2").withExposedPorts(27017);
    static {
      mongodb.start();
      System.setProperty("quarkus.mongodb.connection-string",
                         "mongodb://" + mongodb.getContainerIpAddress() + ":" + mongodb.getFirstMappedPort());
    }
    
  3. Que empiece Quarkus. Dado que Quarkus no admite la configuración dinámica, debe configurar el puerto MongoDB antes de que se inicie Quarkus.