MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Tests d'intégration avec Testcontainers + Quarkus + MongoDB

Je ne peux pas dire avec certitude sans voir votre configuration de test, mais je suppose que cela fonctionne avec docker run et non Testcontainers car docker run expose un port fixe (toujours 27017) mais Testcontainers exposera le port 27017 comme port aléatoire (pour éviter les conflits de port sur les machines de test).

Pour utiliser Testcontainers avec un test Quarkus, vos tests doivent suivre ce flux :

  1. Démarrer les conteneurs. Ceci est nécessaire car le port exposé aléatoirement pour MongoDB ne peut être connu qu'après le conteneur a été démarré.
  2. Obtenez des ports aléatoires à partir de Testcontainers après le démarrage des conteneurs, puis définissez les propriétés de configuration de test qui dépendent des ports de conteneur. Par exemple :

    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. Laissez Quarkus démarrer. Étant donné que Quarkus ne prend pas en charge la configuration dynamique, vous devez définir le port MongoDB avant le démarrage de Quarkus.