
@DisplayName("deleteArticle: 블로그 글 삭제에 성공한다")
@Test
public void deleteArticle() throws Exception{
//given
final String url = "/api/articles/{id}";
final String title = "title";
final String content = "content";
Article saveArticle = blogRepository.save(Article.builder()
.title(title)
.content(content)
.build());
//when
mockMvc.perform(delete(url, saveArticle.getId()))
.andExpect(status().isOk());
//then
List<Article> articles = blogRepository.findAll();
assertThat(articles).isEmpty();
}
GIVEN: 테스트 전제 조건 세팅, 새로운 Article 엔티티를 저장한다.
반환받은 saveArticle.getId()가 삭제할 대상의 식별자가 된다.
WHEN : API 호출. delete(url, saveArticle.getId())로 "api/articles/{id}" DELETE 요청을 보낸다.
컨트롤러 -> 서비스 -> 리포지토리 흐름이 제대로 연결되는지 검증하는 단계이다.
THEN : 삭제 후 실제 DB 상태 확인. blogRepository.findAll()로 남아 있는 모든 Article을 조회한다.
assertThat(article).isEmpty()로 리스트가 비어 있어야 하는 조건을 검증한다.

해당 글은 다음 도서의 내용을 정리하고 참고한 글임을 밝힙니다.
신선영, ⌜스프링 부트 3 벡엔드 개발자 되기 - 자바 편⌟, 골든래빗(주), 2023, 384쪽