코드스테이츠_국비교육/[Section3]

55.01_[Spring MVC] 테스팅(Testing)_슬라이스 테스트 복습_22.11.09

생각없이 해도 생각보다 좋다. 2022. 11. 9. 21:03

슬라이스 테스트
>슬라이스 테스트의 필요성
1. 단위 테스트는 해당 메서드가 잘 기능하지의 유무를 확인할 뿐이어서 수 많은 상호작용으로 이뤄지는 애플리케이션의 기능 전체를 테스트를 대신할 수 없다.
2. 상호작용의 단위를 나눈 계층 별 테스트가 필요하다.

>슬라이스 테스트
: 특정 계층만 잘라서 테스트하는 것
: 보통 API 계층과 데이터 액세스 계층의 테스트를 의미함.
: 서비스 계층은 단위 테스트로 나누거나 서비스 계층 테스트 자체를 단위 테스트라고도 함.

API 계층 테스트
>API 계층 테스트 클래스 기본 구조
-@SpringBootTest
: 테스트를 위한 Application Context 생성
: Spring Boot 기반 애플리케이션을 테스트 할 수 있음.
// ?? : Application Context 이 API 계층에만 필요한게 아닌데 왜 데이터 액세스 계층에는 안 쓸까?
-@AutoConfigureMockMvc
: Spring Boot Initializer 처럼 Controller 테스트를 위한 구성을 자동으로 형성
-@Autowired
: 적합한 Spring Bean을 찾아 해당 애너테이션이 붙은 객체의 DI 를 실행한다.
: 생성자, Setter, 필드에 사용가능하고, 알다시피 생성자에는 이제 생략할 수 있다. 그래서 우리가 DI를 위해 생성자를 만들기만 하면 되는 것이다.
-MockMvc
: Spring MVC 테스트 프레임워크 중 하나로, Tomcat과 같은 서버를 실행하지 않고도 Controller를 테스트 할 수 있게 도와준다.
: MockMvc의 메서드(예시. perform())로 기존에 작성해둔 controller와 연동할 수 있다.
-given
: Request body을 대신할 데이터가 필요하다.
: request body를 담은 PostDto를 생성하고 JSON 형태로 변경한다. 
-when
: MockMvc 객체를 이용해서 요청 URL과 HTTP 메서드 등을 지정한다.
-then
: when에서 반환받은 HTTP status와 response body 데이터를 검증한다.