![[워밍업 클럽 4기-백엔드] Day 18 미션](https://cdn.inflearn.com/public/files/blogs/efcef178-6384-4232-8a35-9075d5d103c4/4-backend.png)
[워밍업 클럽 4기-백엔드] Day 18 미션
2개월 전
@Mock
테스트 중 대체할 객체 생성
@MockBean
Spring Context 에 모의 객체 주입
@Spy
실제 객체 감시
@SpyBean
Spring Bean 감시
@InjectMocks
모킹된 객체를 주입하며 테스트 객체 생성
@BeforeEach void setUp() {
사용자 생성에 필요한 내용 준비 1-1,1-3,1-5
사용자 생성 1-2,1-4,1-6
게시물 생성에 필요한 내용 준비 2-1,2-3,2-5
게시물 생성 2-2, 2-4, 2-6
}
@DisplayName("사용자가 댓글을 작성할 수 있다.")
@Test
void writeComment() {
// given
1-5. 댓글 생성에 필요한 내용 준비
// when
1-6. 댓글 생성
// then
검증
}
@DisplayName("사용자가 댓글을 수정할 수 있다.")
@Testvoid updateComment() {
// given
2-5. 댓글 생성에 필요한 내용 준비
2-6. 댓글 생성
// when
2-7. 댓글 수정
// then
검증
}
@DisplayName("자신이 작성한 댓글이 아니면 수정할 수 없다.")
@Test
void cannotUpdateCommentWhenUserIsNotWriter() {
3-1. 사용자1 생성에 필요한 내용 준비
3-2. 사용자1 생성
3-5. 사용자1의 게시물 생성에 필요한 내용 준비
3-6. 사용자1의 게시물 생성
// given
3-3. 사용자2 생성에 필요한 내용 준비
3-4. 사용자2 생성
3-7. 사용자1의 댓글 생성에 필요한 내용 준비
3-8. 사용자1의 댓글 생성
// when & // then
3-9. 사용자2가 사용자1의 댓글 수정 시도
}
@BeforeEach에서 3-1~3-9번을 뺀이유
사용자1과 사용자2에대한 댓글 수정에대한 확인이 필요하므로 BeforeEach 를 하게되면 관련데이터는 초기화되어 댓글수정확인을 할수 없다.
@DisplayName("자신이 작성한 댓글이 아니면 수정할 수 없다.")
에서 when & then으로 3-9 만 선택한 이유
제목처럼 댓글이 수정확인을 사용자 2가 사용자1의 댓글을 수정할수 있어 그에따른 액션과 결과가 동시에 필요하다 판단되어 when & then 둘다로 선택하였다.
출처
practical-testing 박우빈 코치님
댓글을 작성해보세요.