본문 바로가기
TIL

Plmography 프로젝트 작업 로그 #25 - 외부 API 사용시 null 처리 (23.01.06 TIL)

by winteringg 2023. 1. 6.

며칠 전 외부 API 를 사용해서 DB 에 데이터를 저장하는데에 성공하고, 오늘은 그 데이터를 화면에 띄우는 작품 목록 조회 REST API 를 작성했다. 그런데 전체 테스트를 한 번 돌리니 기존에는 성공했던 백도어 테스트가 깨지는 것이었다.

일단 실제 DB 를 들어가서 확인해보니 데이터는 잘 들어와있는데 테스트는 NPE(NullPointException) 를 뱉어낸다. 원인을 알 수 없어서 RestTemplate 구조를 이리저리 바꿔가며 테스트 해보다가, 결국 동료분의 도움으로 아래처럼 삼항연산자로 해결하긴 했다. 

contentRepository.save(
    Content.builder()
            .imageUrl(data.get("poster_path") == null
                    ? "" :
                    imageUrl + data.get("poster_path").toString().replaceAll(match, ""))
            .releaseDate(data.get("release_date") == null
                    ? ""
                    : data.get("release_date").toString().replaceAll(match, ""))
            .popularity(data.get("popularity").toString().replaceAll(match, ""))
            .description(data.get("overview").toString().replaceAll(match, ""))
            .createdAt(dateTime)
            .build()
);

데이터가 null 이면 기본값을 "" 으로 처리했더니 테스트가 기존대로 잘 동작하고, 데이터도 여전히 잘 들어왔다. 설명을 듣기로는 api 를 호출하며 로딩될 때, 그 잠깐 데이터가 없는 순간을 null 로 띄우는 것이라고 한다. 어쨌든 해결!

댓글