- Spring Framework 자체적으로도 지원하고 있는 Mocking 라이브러리
- Mock 객체를 생성하고, 해당 Mock 객체가 진짜처럼 동작하게 하는 역할
- Mockito의 Mocking 기능을 이용해서 테스트하고자 하는 대상에서 다른 영역(다른 계층 또는 외부 통신이 필요한 서비스 등)을 단절시켜 오로지 테스트 대상에만 집중
- Stubbing : 테스트를 위해서 Mock 객체가 항상 일정한 동작을 하도록 지정하는 것
- 다른 영역을 목킹해서 마치 구현한것럼 가정하고 테스트 코드를 짬
슬라이스 Test
@MockBean(필드) : Application Context에 등록되어 있는 Bean에 대한 Mockito Mock 객체를 생성하고 주입
given() : Mock 객체가 특정 값을 리턴하는 동작을 지정하는 데 사용하며, Mockito에서 지원하는 when()과 동일한 기능
given(memberService.createMember(Mockito.any(Member.class))).willReturn(member);
비즈니스 로직 Test : 서비스 계층에 구현된 비즈니스 로직 자체를 Spring Framework의 도움을 받지 않고도 빠르게 테스트를 진행
@ExtendWith(MockitoExtension.class) : Spring을 사용하지 않고, Junit에서 Mockito의 기능을 사용
@Mock(필드) : 해당 필드 객체를 Mock 객체로 인식
@InjectMocks(필드) : 생성한 Mock 객체를 주입 - @BeforeEach 생성자 주입과 동일
@Mock
private BookRepository bookRepository;
private BookServiceImpl bookService; //테스트할 대상
@BeforeEach //테스트 자체를 하기 위한 사전준비(메서드 내의 모든 테스트를 수행하기 위함)
void beforeEach(){ //테스트 시 초기화 해야할 내용을 기입한다 - 마치 생성자처럼 사
this.bookService = new BookServiceImpl(bookRepository);
}
'Coding > Back - Spring Framework' 카테고리의 다른 글
Spring API문서화 1/2 Swagger #Day19 (0) | 2023.09.12 |
---|---|
Spring View-Thymeleaf #Day16 (0) | 2023.09.11 |
Spring Testing JUnit 사용 2/3 #Day13-15 (0) | 2023.09.11 |
[Error] JPA 테이블 생성 중 ORDER 테이블 : drop table if exists [*]order CASCADE 오류 (0) | 2023.09.04 |
Spring Testing 개념 1/3 #Day13 (0) | 2023.09.03 |