• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

테스트 코드 작성시

23.01.10 22:43 작성 조회수 327

1

회원가입 기능을 구현할 때 컨트롤러에는 다음과 같은 코드가

@PostMapping("/signup")
public void signup(@RequestBody @Valid MemberSignup memberSignup) {
    memberService.signup(memberSignup);
}

서비스에는 다음과 같은 코드가

@Transactional
public void signup(MemberSignup memberSignup) {
    if (validateDuplication(memberSignup)) {
        throw new NameDuplicateException();
    }
    Member member = new Member(memberSignup);
    memberRepository.save(member);
}

있다고 할 때 컨트롤러 테스트에서는 @Valid로 인한 실패와 회원 가입 성공 정도만 보여주고 중복 검증은 서비스 테스트에서 하면 되나요?

아니면 컨트롤러에서도 모두 테스트하는 것이 좋은 방법인가요?

단위 테스트를 만드는 것이 좋다고 들었는데 테스트 코드가 너무 무거워 지는 것 같아서 질문드립니다.

감사합니다!

답변 1

답변을 작성해보세요.

1

안녕하세요.
질문을 남겨주셔서 감사합니다.

통합 테스트로서 아이디 중복 테스트는 컨트롤러에서도, 서비스에서도 테스트 하시는 게 좋습니다.

현재 강의에서 단위 테스트쪽은 진행하지 않았는데요
컨트롤러 단위 테스트면 service를 모킹해서,
서비스 단위 테스트면 @DataJpaTest를 이용해서 가능할것 같습니다.

감사합니다.