728x90
- Mock 객체가 어떻게 사용이 됐는지 확인할 수 있다.
- 특정 메서드가 특정 매개변수로 몇 번 호출되었는지, 최소 한 번은 호출됐는지, 전혀 호출되지 않았는지
- Verifying exact number of invocations
- 어떤 순서대로 호출했는지
- Verification in order
- 특정 시간 이내에 호출됐는지
- Verification with timeout
- 특정 시점 이후에 아무 일도 벌어지지 않았는지
- Finding redundant invocations
- 특정 메서드가 특정 매개변수로 몇 번 호출되었는지, 최소 한 번은 호출됐는지, 전혀 호출되지 않았는지
@Test
void verification(@Mock MemberService memberService, @Mock StudyRepository studyRepository){
StudyService studyService = new StudyService(memberService,studyRepository);
Study study = new Study(10, "테스트");
Member member = new Member(1L,"KKK");
when(memberService.findById(1L)).thenReturn(Optional.of(member));
when(studyRepository.save(isA(Study.class))).thenReturn(study);
studyService.createNewStudy(1L, study);
assertNotNull(study.getOwner());
//Notify가 몇번 호출 된지 확인 가능
//해당 함수를 몇번 호출 되는지
verify(memberService, times(1)).notify(study);
verify(memberService, times(1)).notify(member);
verify(memberService, never()).validation(any());
InOrder inOrder = inOrder(memberService);
inOrder.verify(memberService).notify(study); //순서대로 적어주면 된다.
inOrder.verify(memberService).notify(member);
verifyNoMoreInteractions(memberService);
//verifyNoMoreInteractions(memberService); //어떤한 interactions 도 일어나면 안된다.
//TimeOut 과 같은 시간 제약을 걸수도 있다.
}
728x90
'더 자바, 애플리케이션을 테스트하는 다양한 방법' 카테고리의 다른 글
| Ch03. 도커와 테스트 - Testcontainers 소개 (0) | 2022.01.07 |
|---|---|
| Ch02. Mockito - BDD 스타일 Mockito API (0) | 2022.01.05 |
| Ch02. Mockito - Mock 객체 Stubbing (0) | 2022.01.05 |
| Ch02. Mockito - Mock 객체 만들기 (0) | 2022.01.05 |
| Ch02. Mockito - Mockito 시작하기 (0) | 2022.01.05 |