코드 그라데이션

230217 BoardServiceImpl 테스트 코드 (4) 게시글 삭제 본문

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
Comments