application test : mockito - verify
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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("테스트 완료!");
|
||||||
|
|||||||
Reference in New Issue
Block a user