[Practical Testing: 실용적인 테스트 가이드]
섹션 6. Spring & JPA 기반 테스트
Spring Framework를 사용하면서 어떤 하나의 객체 혹은 하나의 레이어를 테스트할 때 의존관계를 갖고 있으면 방해가 된다. 이 방해되는 요소들을 가짜로 처리하고 테스트 대상에 집중할 수 있게 한다.
컨트롤러 레이어만 구별해서 테스트하기 위해 컨트롤러와 관련된 빈들만 올려서 테스트 할 수 있는 어노테이션
@WebMvcTest(controllers = ProductController.class)
class ProductControllerTest {
...
}
스프링부터 스타터 테스트를 쓰면 자동으로 포함이 되어 있다.
import org.springframework.boot.test.mock.mockito.MockBean;
mockedList
를 verify()
를 통해 검증할 수 있다.
when().thenReturn()
을 통해 mockedList.get(0)
을 할 때 "first"를 반환하게 해달라고 mockget에 설정할 수 있다.
📑 mockito 공식 사이트 : https://site.mockito.org/
mockito에서 제공하는 어노테이션.
컨테이너에 mockito로 만든 mock객체를 넣어주는 역할을 한다.
Service는 이미 빈으로 관리되고 있으므로 MockBean에 적용하면 해당 서비스대신 서비스의 목객체를 대신 넣어준다.
ProductService ➡ ProductService의 Mock Object
@WebMvcTest 사용 시 @MockBean이 없으면 서비스를 못 찾는다.
📑 출처