인프런 워밍업 클럽 4기 BE - 미션 Day 18

인프런 워밍업 클럽 4기 BE 클린코드 & 테스트

Practical Testing: 실용적인 테스트 가이드

미션 Day 18


@Mock

주로 Spring과 무관한 순수 Mockito 기반의 단위 테스트에서 가짜 객체 mock을 생성하는 데 사용

 

@MockBean

Spring 테스트 환경에서 기존 스프링 빈을 Mock 객체로 교체
@WebMvcTest, @SpringBootTest 등의 테스트에서 의존성을 대체할 때 사용

 

@Spy

실제 객체를 생성하여 일부 메서드의 동작만 Stub 처리하거나 감시

 

@SpyBean

@Spy와 유사하지만 Spring 컨테이너에 등록된 실제 빈을 래핑함

 

@InjectMocks

@Mock 또는 @Spy로 생성한 객체들을 테스트 대상 클래스에 자동으로 주입함


@BeforeEach
void setUp() {
    1-1 / 2-1 / 3-1: 사용자1 생성에 필요한 내용 준비
    1-2 / 2-2 / 3-2: 사용자1 생성
    1-3 / 2-3 / 3-5: 게시물 생성에 필요한 내용 준비 (사용자1의 게시물)
    1-4 / 2-4 / 3-6: 게시물 생성 (사용자1의 게시물)
}

@DisplayName("사용자가 댓글을 작성할 수 있다.")
@Test
void writeComment() {
    // given
    1-5: 댓글 생성에 필요한 내용 준비;

    // when
    1-6: 댓글 생성;

    // then
    검증
}

@DisplayName("사용자가 댓글을 수정할 수 있다.")
@Test
void updateComment() {
    // given
    2-5: 댓글 생성에 필요한 내용 준비
    2-6: 댓글 생성;

    // when
    2-7: 댓글 수정;

    // then
    검증
}

@DisplayName("자신이 작성한 댓글이 아니면 수정할 수 없다.")
@Test
void cannotUpdateCommentWhenUserIsNotWriter() {
    // given
    3-3: 사용자2 생성에 필요한 내용 준비
    3-4: 사용자2 생성
    3-7: 댓글 생성에 필요한 내용 준비 (사용자1의 댓글)
    3-8: 댓글 생성 (사용자1의 댓글);

    // when
    3-9: 사용자2가 사용자1의 댓글 수정 시도;

    // then
    검증
}

댓글을 작성해보세요.

채널톡 아이콘