공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다.
이번 시간에는 사용자에게 발생한 알림을 조회하는 기능을 테스트해 보도록 하겠다. 알림은 댓글이나 좋아요 같은 활동이 발생할 때 사용자에게 알려주는 중요한 기능이다. 테스트를 통해 알림 조회 기능이 정상적으로 동작하는지 검증할 것이다.
1. 알림 기능 개요
사용자는 자신이 쓴 게시물에 대한 댓글이나 좋아요 등의 활동을 알림으로 받을 수 있다. 이번 포스팅에서는 알림 기능에 대한 API 테스트 코드를 작성하고, 로그인이 필요한 상황에서 알림 조회가 정상적으로 이뤄지는지 확인하는 절차를 진행할 것이다.
다음 그림은 알림 화면 UI와 서버 요청 흐름을 나타낸다.
2. UserControllerTest에 알림 테스트 추가
알림 기능을 테스트하기 위해 UserControllerTest에 테스트 코드를 추가한다. 먼저, 사용자가 알림 리스트를 요청할 때, 정상적으로 데이터를 받아오는지 확인하는 테스트를 작성한다.
@Test
@WithMockUser
void 알람기능() throws Exception {
when(userService.alarmList(any(), any())).thenReturn(Page.empty());
mockMvc.perform(get("/api/v1/users/alarm")
.contentType(MediaType.APPLICATION_JSON))
.andDo(print())
.andExpect(status().isOk());
}
- 이 테스트에서는 userService.alarmList()가 정상적으로 호출되고, 결과로 비어 있는 페이지가 반환된다고 가정하고 있다. 실제로 알림 데이터가 있으면 해당 데이터를 반환할 수 있게 로직을 확장할 예정이다.
다음으로, 로그인이 필요한 API에서 비로그인 사용자가 알림 리스트를 요청했을 때, 적절한 에러 응답을 반환하는지 테스트한다.
@Test
@WithAnonymousUser
void 알람리스트요청시_로그인하지_않은경우() throws Exception {
when(userService.alarmList(any(), any())).thenReturn(Page.empty());
mockMvc.perform(get("/api/v1/users/alarm")
.contentType(MediaType.APPLICATION_JSON))
.andDo(print())
.andExpect(status().isUnauthorized());
}
- 이 테스트는 로그인을 하지 않은 상태에서 알림을 요청하는 시나리오를 다루고 있으며, 이 경우 Unauthorized (401) 상태 코드를 반환하는지 확인한다.
4. UserService 메서드 추가
알림 리스트를 반환하는 alarmList 메서드를 UserService에 추가한다. 이번에는 일단 비어 있는 페이지를 반환하도록 구현하고, 이후에 알림 데이터베이스와 연동하여 실제 알림 데이터를 반환하는 로직을 작성할 계획이다.
// TODO : 실제 알림 데이터를 반환하는 로직 추가
public Page<Void> alarmList(String userName, Pageable pageable) {
return Page.empty();
}
이번 포스팅에서는 알림 기능의 테스트 코드를 작성하고, 알림을 조회하는 API의 동작을 검증해 보았다. 알림은 사용자에게 중요한 피드백을 제공하는 기능이므로, 이후 실제 알림 데이터를 처리하는 로직을 추가하여 더욱 완성도 있는 알림 기능을 구현할 것이다.
다음 시간에는 알림 기능에 대한 실제 데이터 처리 및 테스트를 확장해 보도록 하겠다.
'BackEnd > Project' 카테고리의 다른 글
[SNS] Ch04. 대규모 트래픽 시 문제점 분석 및 해결 (0) | 2024.09.10 |
---|---|
[SNS] Ch03. 알림 기능 개발 (1) | 2024.09.10 |
[SNS] Ch03. 댓글 기능 개발 (0) | 2024.09.09 |
[SNS] Ch03. 댓글 기능 테스트 작성 (0) | 2024.09.09 |
[SNS] Ch03. 좋아요 기능 개발 (2) | 2024.09.09 |