인프런 워밍업 클럽 4기 BE - 미션 Day 18
6개월 전
인프런 워밍업 클럽 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
검증
}
댓글을 작성해보세요.