我在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(实体)时是否真的有缓存?谁在正确测试存储库?这两个女人真的在一次测试中做了两个乔什做的事吗?请澄清。