application test : mockito - verify

This commit is contained in:
haerong22
2021-02-26 21:53:46 +09:00
parent 9a067f2c29
commit 9d750bf725
2 changed files with 94 additions and 9 deletions

View File

@@ -17,9 +17,12 @@ public class StudyService {
} }
public Study createNewStudy(Long memberId, Study study) { public Study createNewStudy(Long memberId, Study study) {
memberService.findById(memberId) Member member = memberService.findById(memberId)
.orElseThrow(() -> new IllegalArgumentException("Member doesn't exist for id: " + memberId)); .orElseThrow(() -> new IllegalArgumentException("Member doesn't exist for id: " + memberId));
study.setOwnerId(memberId); study.setOwnerId(memberId);
return studyRepository.save(study); Study newStudy = studyRepository.save(study);
memberService.notify(newStudy);
memberService.notify(member);
return newStudy;
} }
} }

View File

@@ -6,6 +6,7 @@ import com.example.apptest.member.MemberService;
import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InOrder;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.Mockito; import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoExtension;
@@ -14,10 +15,91 @@ import java.util.Optional;
import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.*;
@ExtendWith(MockitoExtension.class) @ExtendWith(MockitoExtension.class)
class StudyServiceTest { class StudyServiceTest {
@Test
@DisplayName("stubbing test")
void test_48(@Mock MemberService memberService,
@Mock StudyRepository studyRepository) {
StudyService studyService = new StudyService(memberService, studyRepository);
assertNotNull(studyService);
Study study = new Study(10, "테스트");
Member member = new Member();
member.setId(1L);
member.setEmail("email@email.com");
when(memberService.findById(1L)).thenReturn(Optional.of(member));
when(studyRepository.save(study)).thenReturn(study);
Study newStudy = studyService.createNewStudy(1L, study);
// 특정 시점 이후에 실행 되었는지 확인
verify(memberService, times(1)).notify(newStudy);
verify(memberService, times(1)).notify(member);
verifyNoMoreInteractions(memberService);
System.out.println("테스트 완료!!");
}
@Test
@DisplayName("stubbing test")
void test_47(@Mock MemberService memberService,
@Mock StudyRepository studyRepository) {
StudyService studyService = new StudyService(memberService, studyRepository);
assertNotNull(studyService);
Study study = new Study(10, "테스트");
Member member = new Member();
member.setId(1L);
member.setEmail("email@email.com");
when(memberService.findById(1L)).thenReturn(Optional.of(member));
when(studyRepository.save(study)).thenReturn(study);
studyService.createNewStudy(1L, study);
// 메소드 실행 순서 확인
InOrder inOrder = inOrder(memberService);
inOrder.verify(memberService).notify(study);
inOrder.verify(memberService).notify(member);
System.out.println("테스트 완료!!");
}
@Test
@DisplayName("stubbing test")
void test_46(@Mock MemberService memberService,
@Mock StudyRepository studyRepository) {
StudyService studyService = new StudyService(memberService, studyRepository);
assertNotNull(studyService);
Study study = new Study(10, "테스트");
Member member = new Member();
member.setId(1L);
member.setEmail("email@email.com");
when(memberService.findById(1L)).thenReturn(Optional.of(member));
when(studyRepository.save(study)).thenReturn(study);
studyService.createNewStudy(1L, study);
// 특정 메소드의 호출 횟수 테스트
// memberService.notify() 1번 호출
verify(memberService, times(1)).notify(study);
verify(memberService, times(1)).notify(member);
// memberService.validate() 호출 X
verify(memberService, never()).validate(any());
System.out.println("테스트 완료!!");
}
@Test @Test
@DisplayName("stubbing test") @DisplayName("stubbing test")
void test_45(@Mock MemberService memberService, void test_45(@Mock MemberService memberService,
@@ -31,9 +113,9 @@ class StudyServiceTest {
member.setId(1L); member.setId(1L);
member.setEmail("email@email.com"); member.setEmail("email@email.com");
Mockito.when(memberService.findById(1L)) when(memberService.findById(1L))
.thenReturn(Optional.of(member)); .thenReturn(Optional.of(member));
Mockito.when(studyRepository.save(study)).thenReturn(study); when(studyRepository.save(study)).thenReturn(study);
studyService.createNewStudy(1L, study); studyService.createNewStudy(1L, study);
@@ -59,7 +141,7 @@ class StudyServiceTest {
// 첫번째 호출 Optional.of(member) 리턴 // 첫번째 호출 Optional.of(member) 리턴
// 두번째 호출 new RuntimeException() 리턴 // 두번째 호출 new RuntimeException() 리턴
// 세번째 호출 이후 Optional.empty() 리턴 // 세번째 호출 이후 Optional.empty() 리턴
Mockito.when(memberService.findById(any())) when(memberService.findById(any()))
.thenReturn(Optional.of(member)) .thenReturn(Optional.of(member))
.thenThrow(new RuntimeException()) .thenThrow(new RuntimeException())
.thenReturn(Optional.empty()); .thenReturn(Optional.empty());
@@ -94,7 +176,7 @@ class StudyServiceTest {
member.setEmail("email@email.com"); member.setEmail("email@email.com");
// 예외 테스트 -> memberService.validate(1L) 이 호출되면 IllegalArgumentException 발생 // 예외 테스트 -> memberService.validate(1L) 이 호출되면 IllegalArgumentException 발생
Mockito.doThrow(new IllegalArgumentException()).when(memberService).validate(1L); doThrow(new IllegalArgumentException()).when(memberService).validate(1L);
// 예외 체크 // 예외 체크
assertThrows(IllegalArgumentException.class, () -> memberService.validate(1L)); assertThrows(IllegalArgumentException.class, () -> memberService.validate(1L));
@@ -119,7 +201,7 @@ class StudyServiceTest {
// when( 실행할 구문 ) thenReturn( 리턴 값 ) // when( 실행할 구문 ) thenReturn( 리턴 값 )
// memberService.findById( 아무값 ) 이 호출되면 Optional.of(member) 리턴 // memberService.findById( 아무값 ) 이 호출되면 Optional.of(member) 리턴
Mockito.when(memberService.findById(any())).thenReturn(Optional.of(member)); when(memberService.findById(any())).thenReturn(Optional.of(member));
assertEquals("email@email.com", memberService.findById(1L).get().getEmail()); assertEquals("email@email.com", memberService.findById(1L).get().getEmail());
assertEquals("email@email.com", memberService.findById(2L).get().getEmail()); assertEquals("email@email.com", memberService.findById(2L).get().getEmail());
@@ -151,8 +233,8 @@ class StudyServiceTest {
@DisplayName("Mockito.mock() test") @DisplayName("Mockito.mock() test")
void test_39() { void test_39() {
MemberService memberService = Mockito.mock(MemberService.class); MemberService memberService = mock(MemberService.class);
StudyRepository studyRepository = Mockito.mock(StudyRepository.class); StudyRepository studyRepository = mock(StudyRepository.class);
StudyService studyService = new StudyService(memberService, studyRepository); StudyService studyService = new StudyService(memberService, studyRepository);
assertNotNull(studyService); assertNotNull(studyService);
System.out.println("테스트 완료!"); System.out.println("테스트 완료!");