sql >> Database teknologi >  >> NoSQL >> MongoDB

Integrationstest med Testcontainere + Quarkus + MongoDB

Jeg kan ikke sige det med sikkerhed uden at se din testkonfiguration, men jeg gætter på, at det virker med docker run og ikke Testcontainere, fordi docker run viser en fast port (altid 27017), men testcontainere vil afsløre port 27017 som en tilfældig port (for at undgå portkonflikter på testmaskiner).

For at bruge Testcontainere med en Quarkus-test skal dine test følge dette flow:

  1. Start containere. Dette er nødvendigt, fordi den tilfældige eksponerede port for MongoDB kun kan kendes efter beholderen er startet.
  2. Få randomiserede porte fra Testcontainere, efter containere er startet, og indstil derefter eventuelle testkonfigurationsegenskaber, der afhænger af containerporte. For eksempel:

    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. Lad Quarkus starte. Da Quarkus ikke understøtter dynamisk konfiguration, skal du indstille MongoDB-porten, før Quarkus starter.


  1. mongodb:forespørg på de første par rækker, hvor summen af ​​den specifikke kolonne er større eller lig med C

  2. hvordan man har relationer mange til mange i redis

  3. Hvordan sorterer man i mangust?

  4. Opdater ATOMISK flere dokumenter OG returner dem