본문 바로가기

TIL(Today I Learned)

20.03.20) TIL

회고

자료구조

Spring MVC 테스트 코드

치명적인 단점

  • MVC 테스트는 Controller가 작동을 하는 지 안하는 지만 체크할 뿐 서버에서 제대로 동작하는 지는 알 수 없다. 만약 컨트롤러가 잘못된 view를 리턴하더라도 테스트 코드에서는 컨트롤러가 잘못된 view를 리턴하고 있는지 테스트하면 통과할 수 있다.

    발생 버그

  • Pet-Clinic 테스트 코드를 보며 UserController 테스트 코드를 작성했는데 @WebMvcTest(UserController.class) 사용 시 빌드 실패. 스택오버 플로우를 찾아보니 아래와 같은 어노테이션 사용.
@SpringBootTest  
@AutoConfigureMockMvc  
public class UserControllerTests {
  • 원인) @WebMvcTest는 전체 설정을 활성화하지 않고 MVC와 관련된 기능만 활성화한다고 한다.

UserController 테스트 코드 작성

  • 회원가입 폼 method 테스트
@Test  
void testCreateForm() throws Exception {  
  mockMvc.perform(get("/users/form")).andExpect(status().isOk()).andExpect(view().name("user/form"));  
}
  • 코드 설명) mockMvc는 공부가 필요하지만 서버 대신해서 테스트를 도와주는 객체같다. perform 메서드 내에 요청 메서드와(GET) url을 작성한다.

  • andExpect()는 상태 코드나 view가 원하는 값대로 보여지는 지 확인하는 메서드이다.

  • 회원가입 method 테스트

@Test  
void testCreate() throws Exception {  
  mockMvc.perform(post("/users/create").requestAttr("user", new User())).andExpect(status().is3xxRedirection());  
}
  • 코드설명) requestAttr은 클라이언트가 보내는 엔티디의 정보를 나타낸다. 회원가입할 때 클라이언트는 모든 속성을 User 객체에 담아서 보내기 때문에 저렇게 나온다.

Postman 사용법

  • https://www.postman.com/downloads/에서 설치 한다.
  • 요청할 method를 설정하고 url을 입력한다. ex) http://localhost:8080/users/create. 만약 post일 경우 body에 key-value로 사용하면 된다.
  • 유용한 기능 4가지
    • Collections : request API를 저장해서 사용 가능.
    • Code Generate : 성공한 request를 코드로 만들어줌
    • Manage environments : 변수 관리
    • interceptor

'TIL(Today I Learned)' 카테고리의 다른 글

20.03.22) TIL  (0) 2020.03.23
20.03.21) TIL  (0) 2020.03.21
20.03.19) TIL  (0) 2020.03.20
20.03.18) TIL  (0) 2020.03.19
20.03.17) TIL  (0) 2020.03.17