Spring Boot @DataJpaTest тестирование репозитория с помощью em.persistFlushFind () и repo.save () - PullRequest
0 голосов
/ 14 мая 2018

Я видел 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) втест?Кто правильно тестирует репозиторий?Действительно ли две женщины делают в одном тесте то, что Джош делает в двух?Пожалуйста, уточните.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...