• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

테스트 코드 질문있습니다.

20.07.30 23:16 작성 조회수 154

0

안녕하세요.

회원계정에 해당하는 태그를 조회하는 서비스로직 getTags에서 궁금한점이 있습니다.

저는 자바8을 사용하고있어서(sysout은 나중에 찍었습니다.)

public Set<Tag> getTags(Account account) {
        Optional<Account> byId = accountRepository.findById(account.getId());
        System.out.println("byid : " + byId.orElseThrow(NullPointerException::new).getTags());
        System.out.println(byId);
        //없으면 에러를 던지고 있으면 태그를 가져온다
        return byId.orElseThrow(NullPointerException::new).getTags();
    }

//결과값
byid : null
Optional[com.jpa.studywebapp.domain.Account@3c]

위와같이 orElseThrow에 인자를 채워서 사용했습니다

그런데 자꾸 테스트에서 NPE가 발생했는데, 신기한점은 실제로 byid는 출력이 되는데 orElseThrow().getTags를 거치면 null이 출력이됩니다.

이 부분은 Detached상태도 아닌데 왜 자꾸 NPE가 출력이 되는지 궁금합니다.

답변 2

·

답변을 작성해보세요.

1

NPE하고 null을 리턴한거랑은 다른건데 제가 볼 때 NPE가 발생한건 아닌거 같은데요. 다시 잘 보시기 바랍니다.

0

junyoung.jeong님의 프로필

junyoung.jeong

2021.04.23

저같은경우 account에 Set<account> tags = new HashSet<>() 을 추가하여 해결했습니다.