-
Spring boot api test codeComputer Science/Spring boot 2022. 10. 6. 14:44
json을 포함하여 body를 받아야하는 post api로 test를 하겠다.
test를 진행할 controller 이다.
package com.lof.lofserver.controller.user; import com.lof.lofserver.controller.user.request.UserInfoDto; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/v1/user") public class UserController { @PostMapping("/create") public ResponseEntity<?> createUser(@RequestBody UserInfoDto userInfoDto){ return null; } }
test 코드이다.
import com.fasterxml.jackson.databind.ObjectMapper; import com.lof.lofserver.controller.user.request.UserInfoDto; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultActions; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; @WebMvcTest(controllers = UserController.class) class UserControllerTest { @Autowired private MockMvc mvc; @Autowired private ObjectMapper objectMapper; @Test @DisplayName("유저 생성 테스트") public void userCreate() throws Exception{ //given String googleAccessToken = "googleAccessToken"; String fcmToken = "fcmToken"; UserInfoDto userInfoDto = new UserInfoDto(googleAccessToken, fcmToken); //when ResultActions resultActions = mvc.perform( MockMvcRequestBuilders.post("/v1/user/create") .contentType("application/json") .content(objectMapper.writeValueAsString(userInfoDto))); //then resultActions.andExpect(MockMvcResultMatchers.status().isOk()); } }
대부분의 test code는 given, when, then으로 구성을 하는것이 좋으며
@WebMvcTest 어노테이션으로 test를 진행할 controller를 등록하고
MockMvc 를 이용하여서 test를 하였다.
ObjectMapper는 객체를 json string화 하기 위해서 사용하였다.
static 을 사용하면 조금더 깔끔해진다.
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
public void userCreate() throws Exception{ //given String googleAccessToken = "googleAccessToken"; String fcmToken = "fcmToken"; UserInfoDto userInfoDto = new UserInfoDto(googleAccessToken, fcmToken); //when ResultActions resultActions = mvc.perform( post("/v1/user/create") .contentType("application/json") .content(objectMapper.writeValueAsString(userInfoDto))); //then resultActions.andExpect(status().isOk()); }
'Computer Science > Spring boot' 카테고리의 다른 글
Spring boot DB 한글 깨짐 현상 (0) 2022.10.06 Spring boot 생성자 주입으로 사용해야 하는 이유 (0) 2022.10.06 Spring boot 와 Spring의 차이 (2) 2022.10.05 Spring boot 비동기 처리 (Aysnc) (0) 2022.09.29 spring boot 에서 JWT 사용하기. (0) 2022.09.04