-
[Spring] JUnit API 테스트 코드 작성 (MockMvc)Back End/Spring Boot 2021. 11. 30. 21:14
* MockMvc 는 API 컨트롤러를 테스트하기 위한 도구이다.
# 주의사항
- MockMvc 를 주입하려면 @AutoConfigureMockMvc 어노테이션이 필요하다.
# 회원가입과 로그인 API 를 테스트하기 위한 테스트 코드
@SpringBootTest @Slf4j @AutoConfigureMockMvc public class LoginApiTest { @Autowired private UserRepository userRepository; @Autowired private MockMvc mockMvc; @Autowired private ObjectMapper objectMapper; @Test @DisplayName("SignUp & Login Test") public void AccountTest() throws Exception{ String signUpUrl = "/api/sign-up"; String loginUrl = "/api/login"; objectMapper= Jackson2ObjectMapperBuilder.json() .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) .modules(new JavaTimeModule()) .build(); SignUpReq signUpReq = UserDto.SignUpReq.builder() .id("newUser") .pw("1234") .email("daniel@naver.com") .build(); String content = objectMapper.writeValueAsString(signUpReq); log.info(content); System.out.println("# 회원가입 테스트"); mockMvc .perform(MockMvcRequestBuilders.post(signUpUrl) .content(content) .contentType(MediaType.APPLICATION_JSON)) .andExpect( result -> { MockHttpServletResponse response = result.getResponse(); log.info(response.getContentAsString()); }); System.out.println("# 회원가입 후 DB 확인"); userRepository.findAll().forEach(System.out::println); LoginReq loginReq = UserDto.LoginReq.builder().id("newUser").pw("1234").build(); content = objectMapper.writeValueAsString(loginReq); log.info("#loginReq : {}",content); System.out.println("# 로그인 테스트"); mockMvc .perform(MockMvcRequestBuilders.post(loginUrl) .content(content) .contentType(MediaType.APPLICATION_JSON)) .andExpect(MockMvcResultMatchers.status().isOk()) .andExpect(MockMvcResultMatchers.content().string("true")); } }
728x90'Back End > Spring Boot' 카테고리의 다른 글
[Spring] No Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator (0) 2021.12.02 [Spring] RESTful API 설계 가이드 (1) 2021.12.01 [Spring] JUnit - unsatisfied dependency mockmvc 에러 (0) 2021.11.30 [Spring] Swagger - REST 웹 서비스의 문서화 (0) 2021.10.16 [Spring] Jacoco - 코드 커버리지 체크하기(TDD) (0) 2021.10.15