우선 TDD를 지향하기 때문에 통합 테스트부터 작성한다.
기존의 WebClientIT에 다음 어노테이션을 추가한다.
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
@SpringBootTest
는 모든 Spring Context를 가져와서 테스트를 하도록 하는 어노테이션이다.
따라서 Spring Boot Application은 테스트 실행 전 완전히 초기화될 것이다.
지금 당장은 테스트를 돌렸을 때 실패하는게 정상이다.
서비스는 간단한데, 다음과 같이 수정하면 된다.
@Cacheable(cacheNames = "beerCache", key = "#beerId", condition = "#showInventoryOnHand == false ")
@Override
public Mono<BeerDto> getById(Integer beerId, Boolean showInventoryOnHand) {
if (showInventoryOnHand) {
return beerRepository.findById(beerId)
.map(beerMapper::beerToBeerDtoWithInventory);
} else {
return beerRepository.findById(beerId)
.map(beerMapper::beerToBeerDto);
}
}
beerMapper를 map안에 넣어줬을 뿐인데, 이제 Reactive Type을 반환해 주는 서비스가 된다.