MockMvc로 요청과 응답만 Mock으로 생성한 이전의 테스트는 실제 핸들러 메서드를 호출하여 DB까지 접근하게 되므로 Slice Test라고 볼 수 없다. 각 계층이 다른 계층에 의존성을 가지고 있고, DB 까지 접근하게 되므로 테스트 속도가 느려지게 된다.
결과적으로 특정 계층에 대한 테스트에 집중하는 의도로 구성된 slice tes의 의미가 없어지게 된다.
.jpg.jpg)
Mock 없이 진행된 이전의 테스트
Mock을 통한 계층 간의 단절
- 위의 문제를 해결해 줄 수 있는 것이 Mock 객체를 통한 테스트이다.
- Mock 객체를 생성하여 테스트 중인 계층에서 다른 계층의 메서드를 호출할 때 실제 메서드를 호출하는 것이 아닌 프록시 생성된 Mock 객체의 메서드를 호출하여 실제 의존 계층에 대한 접근을 단절시킨다.
- 이 때 개발자는 Mock 객체의 메서드의 호출 여부와 실제 메서드를 호출했을 때 예상되는 stub 데이터를 Mock 객체 메서드의 반환값으로 직접 설정함으로써 테스트를 할 수 있게 된다.
