#java #spring #unit-testing #spring-data-mongodb #junit-jupiter
Вопрос:
Я пишу тест для класса пользовательских функций MongoRepository.
Вот функции репозиториев, которые мне нужно протестировать:
public interface DataRepository extends MongoRepository<Data, String> {
List<Data> getBySizeId(String sizeId);
List<Data> findAllBy();
List<Data> findAllBySizeId(List<String> sizeId);
}
Вот тестовый класс:
@DataMongoTest
class DataRepositoryTest {
@Autowired
private DataRepository underTest;
@Test
void create() {
//Given
String id = UUID.randomUUID().toString();
Data Data = new Data();
Data.setId(id);
//When
underTest.save(Data);
//Then
Optional<Data> optionalData = underTest.findById(id);
assertThat(optionalData)
.isPresent();
}
@Test
void delete() {
//Given
//When
//Then
}
@Test
void getBySizeId() {
//Given
String SizeId = UUID.randomUUID().toString();
Data Data1 = new Data();
Data1.setSizeId(SizeId);
Data Data2 = new Data();
Data2.setSizeId(SizeId);
Data Data3 = new Data();
Data3.setSizeId(SizeId);
List<Data> DataList = Arrays.asList(Data1, Data2, Data3);
//When
underTest.saveAll(DataList);// assume that is works correct
//Then
List<Data> dataArray = underTest.getBySizeId(SizeId);
assert(dataArray.stream().count() == 3);
}
}
Как вы можете видеть, я использую @DataMongoTest
класс DataRepositoryTest.
Согласно документации:
По умолчанию тесты с аннотацией @DataMongoTest будут использовать встроенный в память процесс MongoDB.
Пока я запускаю тест, тестовые функции обращаются к реальным документам базы данных, а не к MongoDB в памяти.
Мой вопрос заключается в том, есть ли идея, почему он обращается к реальной базе данных, а не к MongoDB в памяти, как это должно быть по умолчанию в соответствии с документами?
Комментарии:
1. В документах говорится, что по умолчанию тесты, аннотированные с помощью @DataMongoTest, будут использовать встроенный в память процесс MongoDB (если он доступен). . Похоже, встроенная база данных нуждается в настройке .