application test : mockito - verify
This commit is contained in:
@@ -17,9 +17,12 @@ public class StudyService {
|
||||
}
|
||||
|
||||
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));
|
||||
study.setOwnerId(memberId);
|
||||
return studyRepository.save(study);
|
||||
Study newStudy = studyRepository.save(study);
|
||||
memberService.notify(newStudy);
|
||||
memberService.notify(member);
|
||||
return newStudy;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.example.apptest.member.MemberService;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InOrder;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
@@ -14,10 +15,91 @@ import java.util.Optional;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
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
|
||||
@DisplayName("stubbing test")
|
||||
void test_45(@Mock MemberService memberService,
|
||||
@@ -31,9 +113,9 @@ class StudyServiceTest {
|
||||
member.setId(1L);
|
||||
member.setEmail("email@email.com");
|
||||
|
||||
Mockito.when(memberService.findById(1L))
|
||||
when(memberService.findById(1L))
|
||||
.thenReturn(Optional.of(member));
|
||||
Mockito.when(studyRepository.save(study)).thenReturn(study);
|
||||
when(studyRepository.save(study)).thenReturn(study);
|
||||
|
||||
studyService.createNewStudy(1L, study);
|
||||
|
||||
@@ -59,7 +141,7 @@ class StudyServiceTest {
|
||||
// 첫번째 호출 Optional.of(member) 리턴
|
||||
// 두번째 호출 new RuntimeException() 리턴
|
||||
// 세번째 호출 이후 Optional.empty() 리턴
|
||||
Mockito.when(memberService.findById(any()))
|
||||
when(memberService.findById(any()))
|
||||
.thenReturn(Optional.of(member))
|
||||
.thenThrow(new RuntimeException())
|
||||
.thenReturn(Optional.empty());
|
||||
@@ -94,7 +176,7 @@ class StudyServiceTest {
|
||||
member.setEmail("email@email.com");
|
||||
|
||||
// 예외 테스트 -> 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));
|
||||
@@ -119,7 +201,7 @@ class StudyServiceTest {
|
||||
|
||||
// when( 실행할 구문 ) thenReturn( 리턴 값 )
|
||||
// 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(2L).get().getEmail());
|
||||
@@ -151,8 +233,8 @@ class StudyServiceTest {
|
||||
@DisplayName("Mockito.mock() test")
|
||||
void test_39() {
|
||||
|
||||
MemberService memberService = Mockito.mock(MemberService.class);
|
||||
StudyRepository studyRepository = Mockito.mock(StudyRepository.class);
|
||||
MemberService memberService = mock(MemberService.class);
|
||||
StudyRepository studyRepository = mock(StudyRepository.class);
|
||||
StudyService studyService = new StudyService(memberService, studyRepository);
|
||||
assertNotNull(studyService);
|
||||
System.out.println("테스트 완료!");
|
||||
|
||||
Reference in New Issue
Block a user