반응형
@PostMapping
public ResponseEntity<?> createPost(
PostCreateRequest requestDto,
HttpServletRequest servletRequest) {
LoginUser loginUser = statusUtil.getLoginUser(servletRequest);
postService.createPost(loginUser, requestDto);
return ResponseEntity.ok().build();
}
응답에 바디가 없는 API를 테스트할 때 위와 같은 컨트롤러가 있고,
@Transactional
public void createPost(LoginUser loginUser, PostCreateRequest requestDto) {
User user = userRepository.findById(loginUser.id())
.orElseThrow(() -> new ServiceException(NOT_EXIST_USER));
Post post = Post.builder()
.user(user)
.content(requestDto.getContent())
.build();
postRepository.save(post);
}
서비스는 다음과 같고,
package sssdev.tcc.domain.post.dto.request;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class PostCreateRequest {
private String content;
}
요청 DTO는 다음과 같을 때 테스트는 다음과 같이 구성을 한다.
@Nested
@DisplayName("게시글 생성")
class PostCreate {
@DisplayName("성공 케이스 - 게시글 생성")
@Test
void create_post() throws Exception {
LoginUser loginUser = new LoginUser(1L);
PostCreateRequest requestDto = new PostCreateRequest("content01");
String json = objectMapper.writeValueAsString(requestDto);
mockMvc.perform(post("/api/posts")
.content(json)
.contentType(MediaType.APPLICATION_JSON))
.andDo(print())
.andExpectAll(status().isOk());
}
}
반응형
'TIL ✍️' 카테고리의 다른 글
23년 12월 28일(목요일) - 61번째 TIL (1) | 2023.12.28 |
---|---|
23년 12월 27일(수요일) - 60번째 TIL (0) | 2023.12.27 |
23년 12월 22일(금요일) - 58번째 TIL (1) | 2023.12.22 |
23년 12월 21일(목요일) - 57번째 TIL (0) | 2023.12.21 |
23년 12월 20일(수요일) - 56번째 TIL : 레포지토리 단에서 예외 발생 (0) | 2023.12.20 |