1. @Mock, @MockBean, @Spy, @SpyBean, @InjectMocks 의 차이를 한번 정리해 봅시다.
정의
- @Mock
- Mockito에서 가짜 객체를 생성할 때 사용합니다. 실제 동작없이 호출 검증이 가능하며 메서드가 예상대로 호출되었는지, 필요한 파라미터가 전달되었는지, 호출 횟수가 올바른지 확인
- 주로 단위테스트로 사용이됩니다.
- @MockBean
- Spring 컨텍스트의 특정 빈이 모의 객체로 대체 되고 해당 빈이 올바르게 호출되거나 특정 동작을 수행하는지 확인
- 통합테스트에서 사용이 됩니다.
- @Spy
- 실제 객체의 동작이 유지되면서도 특정 메서드는 모킹된 대로 동작하는지 확인
- 단위테스트에 사용
- @SpyBean
- Spring 빈의 실제 동작을 유지하면서도 특정 메서드는 모킹한 대로 동작하는지 확인.
- 통합 테스트에 사용