使用em.persistFlushFind()和repo.save()

时间:2018-05-14 15:39:55

标签: spring jpa testing caching repository

我在Spring Boot测试中看过2个youtube视频:一个是 Josh Long ,另一个是 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的RepositoryTest中,他做了以下事情:

repository.save(new Reservation(null, ”Jane”); Collection byReservationName = repository.findByReservationName(”Jane”); assertThat(byReservationName.iterator().next().getReservatonName()).isEqualTo(”Jane”);

顺便说一句。 Josh还有一个单独的JPATest ,他使用TestEntityManager:

Reservation jane = persistFlushFind(new Reservation(null, ”Jane”); assertThat(jane.getReservationName()).isEqualTo(”Jane”);

他们都使用 @DataJpaTest ,它本身用带有@PropertyMapping的@AutoConfigureCache注释(“spring.cache.type”)CacheType cacheProvider()默认 CacheType.NONE ;

那么,在测试中使用repository.save(实体)时是否真的有缓存?谁在正确测试存储库?这两个女人真的在一次测试中做了两个乔什做的事吗?请澄清。

0 个答案:

没有答案