Верт.x поддельный / встроенный mongo

#mongodb #cucumber #vert.x #functional-testing #embedded-database

#mongodb #огурец #vert.x #функциональное тестирование #встроенная база данных

Вопрос:

У меня есть сервис, в котором мне нужно реализовать функциональные тесты (Cucumber), который выполняет некоторый вызов rest.

Ранее в моих предыдущих проектах spring я использовал fongo, но я предполагаю, что он не работает с Vert.x

Теперь для моих тестов cucumber, как мне реализовать поддельный mongo / встроенный mongo или это все вместе другая библиотека. Я также пробовал vertx-embedded-mongo-db, но там ему не хватает хорошей документации.

Ответ №1:

У меня было аналогичное требование, и я достиг его, используя vertx-embedded-mongodb

Что я сделал, так это запустил vertx-embedded-mongodb vertical, а затем запустил свою verticle, которая прослушивает порт mongo 27018 .

 DeploymentOptions embeddedMongoOptions = new DeploymentOptions()
  .setWorker(true)
  .setConfig(new JsonObject().put("port", 27018).put("version", "3.4.3"));

vertx.rxDeployVerticle(EmbeddedMongoVerticle.class.getName(), embeddedMongoOptions)
.map(id -> {
    return new DeploymentOptions()
            .setWorker(true)
            .setConfig(myApplicationCongig);
})
.flatMap(options -> vertx.rxDeployVerticle(MyApp.class.getName(), options))
.subscribe();
  

Просто убедитесь, что в ваших приложениях mongo настроен на прослушивание 27018 вместо 27017 для тестовой среды.

Также приведенное выше решение предназначено только для Vert.x 3.x.x . vertx-embedded-mongodb больше не поддерживается для 4.x.x .