@SpringBootTest, как предварительно заполнить встроенный MongoDB? - PullRequest
1 голос
/ 11 марта 2020

Реализация микросервиса с несколькими конечными точками на основе Spring Boot и MongoDB и попытка написания интеграционных тестов с использованием @SpringBootTest возможностей аннотации.

В настоящий момент я сталкиваюсь с проблемой, которая Мне нужно предварительно заполнить внедренный экземпляр MongoDB, который был создан только во время «тестовой» фразы, некоторыми тестовыми данными.

И я не нашел ни одной из готовых опций, доступных в Spring Boot для этой цели.

Некоторые люди советуют использовать для предварительной проверки данных инструменты, такие как mongobee или mongoprefill или no sql -unit но для меня это похоже на накладные расходы или обходной путь, я не хочу вводить какие-либо новые зависимости даже в области тестирования.

Так что не могли бы вы посоветовать: в текущей экосистеме Spring Boot, какой путь правильный? предварительно заполнить MongoDB для целей тестирования, когда речь идет об интеграционном (сквозном) тестировании с @SpringBootTest?

1 Ответ

1 голос
/ 11 марта 2020

Существует несколько способов предварительного заполнения данных:

  1. Используйте методы жизненного цикла JUnit, такие как @BeforeEach, @BeforeAll для заполнения данных
  2. Вы можете отключить Spring Загрузите автоконфигурацию для встроенной MongoDB, сделайте это самостоятельно и вставьте данные после создания соединения
  3. . Вы могли бы как-то отразить функцию @Sql, имеющуюся у нас для тестирования реляционных баз данных, и написать нечто подобное, используя AsbtractTestExectuionListener. Для этого взгляните на класс Spring SqlScriptsTestExecutionListener
  4. . Предоставьте класс, реализующий интерфейс CommandLineRunner, и активируйте этот компонент только для своего профиля интеграционного теста с помощью @Profile("integration-test")
.
...