MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Teste de integração com Testcontainers + Quarkus + MongoDB


Não posso dizer com certeza sem ver sua configuração de teste, mas acho que funciona com docker run e não Testcontainers porque docker run expõe uma porta fixa (sempre 27017), mas Testcontainers irá expor a porta 27017 como uma porta aleatória (para evitar conflitos de porta em máquinas de teste).

Para usar Testcontainers com um teste do Quarkus, seus testes devem seguir este fluxo:
  1. Iniciar contêineres. Isso é necessário porque a porta exposta aleatória para MongoDB só pode ser conhecida depois o contêiner foi iniciado.

  2. Obtenha portas aleatórias de Testcontainers depois que os contêineres forem iniciados e, em seguida, defina quaisquer propriedades de configuração de teste que dependam das portas do contêiner. Por exemplo:
    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. Deixe o Quarkus começar. Como o Quarkus não oferece suporte à configuração dinâmica, você deve definir a porta do MongoDB antes que o Quarkus seja iniciado.