
사진의 테스트코드가 통과할 수 있도록 서비스 코드를 수정하는것이 문제였습니다.
테스트코드가 실행되는 서비스코드는 다음과 같습니다.
if (!ObjectUtils.nullSafeEquals(user.getId(), todo.getUser().getId())) {
throw new InvalidRequestException("담당자를 등록하려고 하는 유저가 일정을 만든 유저가 유효하지 않습니다.");
}
서비스 코드는 InvalidRequestException을 기대했지만, 실행된건 NullPointException이였습니다.
일단 테스트코드는 통과 하였으나 왜 통과 하였는지 알수가 없어서 튜터님께 질문해보니 오히려 역으로 질문을 하셨습니다.
최종 수정된 코드는 다음과 같습니다.
if (todo.getUser() == null || !ObjectUtils.nullSafeEquals(user.getId(), todo.getUser().getId())) {
throw new InvalidRequestException("담당자를 등록하려고 하는 유저가 일정을 만든 유저가 유효하지 않습니다.");
}
todo.getUser가 null일 경우 뒤의 코드는 실행되지 않으며 바로 InvalidRequestException을 반환하게 됩니다.
user가 null이 아니지만, user.getId()가 todo.getUser().getId()와 다르다면,
InvalidRequestException을 반환하게 됩니다.
생각해보면 간단한건데 왜 생각하지 못했을까요..

뿌엥