RESTAPI
RESTAPI - Event 생성 API - TEST Class
엔꾸꾸
2019. 8. 5. 22:39
REST API - Event API TEST Class
- TEST Class 생성
@RunWith
- 테스트 코드는 Junit기반으로 진행
- @RunWith(SpringRunner.class) SpringBoot Test를 위한 SpringRunner class를 지정
@WebMvcTest
- Web과 관련있는 빈들만 등록이 된다.
- MockMvc가 자동적으로 설정되어 MockMvc를 주입받아 사용할 수 있다.
MockMvc
- Spring Mvc 핵심 클래스
- Mocking되어있는 DispatcherServlet을 상대로 가짜 요청을 만들어 테스트가 가능하다.
- 웹 서버를 띄우지 않기때문에 좀 더 빠르다.
- Slicing Test라고 부른다.
테스트 해야할것 ?
- 입력값을 전달한다면 JSON 응답 201이 나오는가 ?
- Location 헤더에 생성된 이벤트를 조회할수 있는 URI 가 존재하는가 ?
- ID는 DB INSERT시 자동생성된 값으로 나오는가 ?
- 입력 값으로 누가 ID, eventStatus, offline, free 와 같은 데이터까지 같이 준다면 ?
- badRequest or 받기로한 값 이외는 무시
- 입력 데이터가 이상한경우 bad_Request
- 입력한 값이 이상한가 ?
- 비즈니스 로직으로 검사가능한 에러 ?
- 에러 응답 메시지에 에러에 대한 정보가 존재해야한다.
- 비즈니스 로직 적용 되었는지 응답 메시지 확인
- offline, free 값 확인
- 응답에 HATEOAS와 profile관련 링크가 존재하는가 ?
- self(view)
- update(생성한사람은 수정이 가능하다)
- events(목록으로 이동하는 링크)
- API 문서화
- 요청 문서화
- 응답 문서화
- 링크 문서화
- profile 링크 추가
테스트 코드
- mockMvc.perform() // 가짜 요청을 만든다.
- get(), post(), put() .. 각 HTTP Method에 맞는 가짜 요청을 보낸다.
- contentType(): 요청 본문의 컨텐츠 타입
- accept(): Accpet-Header 원하는 응답의 컨텐츠 타입
- andExcept(): 결과를 assertion 할수 있다.
- status(): 응답코드
- isCreated(): 201 응답인지 assertion 한다
- is(STATUS_CODE): 로 원하는 응답코드를 직접 사용할수 있다.
- 응답코드를 직접 사용하는것 보다는 각 응답에 대한 메서드들을 사용할것. TYPE-SAFE한 코드가 된다.