sql >> Database >  >> NoSQL >> MongoDB

Integratietesten met Testcontainers + Quarkus + MongoDB

Ik kan het niet met zekerheid zeggen zonder je testconfiguratie te zien, maar ik vermoed dat het werkt met docker run en niet Testcontainers omdat docker run stelt een vaste poort bloot (altijd 27017) maar Testcontainers geeft poort 27017 weer als een willekeurige poort (om poortconflicten op testmachines te voorkomen).

Om Testcontainers met een Quarkus-test te gebruiken, moeten uw tests deze stroom volgen:

  1. Start containers. Dit is nodig omdat de willekeurig blootgestelde poort voor MongoDB alleen bekend kan zijn na de container is gestart.
  2. Verkrijg gerandomiseerde poorten van Testcontainers nadat containers zijn gestart en stel vervolgens eventuele testconfiguratie-eigenschappen in die afhankelijk zijn van containerpoorten. Bijvoorbeeld:

    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. Laat Quarkus beginnen. Aangezien Quarkus geen dynamische configuratie ondersteunt, moet u de MongoDB-poort instellen voordat Quarkus start.


  1. Waarom tonen verschillende queryplannen van MongoDB verschillende nReturned-waarde?

  2. MongoDB $replaceAll

  3. Hoe vraag je vanuit Mongoose pre hook in een Node.js / Express-app?

  4. Redis versus RabbitMQ als een gegevensmakelaar / berichtensysteem tussen Logstash en elasticsearch