sql >> Databáze >  >> NoSQL >> MongoDB

Testování integrace s Testcontainers + Quarkus + MongoDB

Nemohu to s jistotou říci, aniž bych viděl vaši testovací konfiguraci, ale hádám, že to funguje s docker run a ne Testcontainers, protože docker run zpřístupní pevný port (vždy 27017), ale Testcontainers odhalí port 27017 jako náhodný port (aby se předešlo konfliktům portů na testovacích počítačích).

Chcete-li použít Testcontainers s testem Quarkus, vaše testy musí dodržovat tento postup:

  1. Spusťte kontejnery. To je nutné, protože náhodně vystavený port pro MongoDB může být znám až po kontejner byl spuštěn.
  2. Po spuštění kontejnerů získejte randomizované porty z Testcontainers a poté nastavte vlastnosti konfigurace testu, které závisí na portech kontejneru. Například:

    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. Nechte Quarkus začít. Protože Quarkus nepodporuje dynamickou konfiguraci, musíte před spuštěním Quarkusu nastavit port MongoDB.


  1. MongoDB Zobrazit veškerý obsah ze všech kolekcí

  2. Chcete používat DB s povoleným žurnálováním v 32bitovém systému-MongoDB

  3. Jak definovat rozsah shardingu pro každý shard v Mongo?

  4. Mongoid:najděte přes pole id