Back End/Spring Boot
[Spring] JUnit API 테스트 코드 작성 (MockMvc)
DevPing9_
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