[개발] - Spring/Test Code
230217 BoardServiceImpl 테스트 코드 (4) 게시글 삭제
완벽한 장면
2023. 2. 28. 00:32
초안
@Test
@DisplayName("게시글 삭제 성공 테스트")
void deleteBoard() {
//given
Board board = mock(Board.class);
User user = mock(User.class);
when(boardRepository.findById(board.getId())).thenReturn(Optional.of(board));
when(Optional.of(board).get().checkBoardWriter(user)).thenReturn(true);
//when
boardService.deleteBoard(board.getId(),user);
//then
verify(boardRepository).deleteById(board.getId());
}
}
부연설명
크게 지적할 것은 없지만...
verify(boardRepository).deleteById(board.getId());
이 코드는 사실 어떤 걸 의미하는 지 명확하게 모르는 코드이다.
=> 즉 이 말은 어떤 값을 집어넣어도 다 통과가 나올 수 있다는 말.
아마 그래서 통과가 일어나지 않았을까 추론해본다.
몇 번 호출이 되었는지 검증하는 코드가 이렇다
verify(boardRepository, times(1)).deleteById(board.getId());
만약 time을 영으로 바꾸면, 당연히 안 들어간다!
수정 후 코드
@Test
@DisplayName("게시글 삭제 성공 테스트")
void deleteBoard() {
//given
Board board = mock(Board.class);
User user = mock(User.class);
when(boardRepository.findById(board.getId())).thenReturn(Optional.of(board));
when(Optional.of(board).get().checkBoardWriter(user)).thenReturn(true);
//when
boardService.deleteBoard(board.getId(),user);
//then
verify(boardRepository, times(1)).deleteById(board.getId());
}
}
728x90
반응형