인프런 커뮤니티 질문&답변

yhwjd님의 프로필 이미지
yhwjd

작성한 질문수

호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)

게시글 조회 5 - 페이징 처리 (QueryDSL)

테스트 코드 작성시

작성

·

422

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를 이용해서 가능할것 같습니다.

감사합니다.

yhwjd님의 프로필 이미지
yhwjd

작성한 질문수

질문하기