Я видел 2 видео на YouTube по тестированию Spring Boot: одно от Джош Лонг и другое от S.Jalukar и M. Bhave (инженеры-программисты из Pivotal) .
Я нашел что-то в их RepositoryTest , что для меня выглядит несоответствием.
Женщины-разработчики во время тестированияпользовательский метод findByName () хранилища делает это:
Car savedCar = entityManager.persistFlushFind(new Car(”prius”,);
Car car = repository.findByName(”prius”);
assertThat(car.getName()).isEqualTo(savedCar.getName());
И они утверждают, что важно не использовать TestEntityManager persistFlushFind (entity) вместо repository.save (entity) , так как первый сохраняет непосредственно в базу данных, а второй сохраняет только в кэш, поэтому мы не будем на самом деле тестировать то, что действительно происходит в реальном приложении.
В репозитории Josh's RepositoryTestОн делает следующее:
repository.save(new Reservation(null, ”Jane”);
Collection byReservationName = repository.findByReservationName(”Jane”);
assertThat(byReservationName.iterator().next().getReservatonName()).isEqualTo(”Jane”);
Кстати.У Джоша также есть отдельный JPATest , в котором он использует TestEntityManager:
Reservation jane = persistFlushFind(new Reservation(null, ”Jane”);
assertThat(jane.getReservationName()).isEqualTo(”Jane”);
Они оба используют @ DataJpaTest , который сам аннотируется@AutoConfigureCache с @PropertyMapping ("spring.cache.type") CacheType cacheProvider () по умолчанию CacheType.NONE ;
Итак, действительно ли существует кэширование при использовании repository.save (entity) втест?Кто правильно тестирует репозиторий?Действительно ли две женщины делают в одном тесте то, что Джош делает в двух?Пожалуйста, уточните.