-
Mock 객체 Stubbing백기선(인프런 강의)/더 자바, 애플리케이션을 테스트하는 다양한 방법 2020. 5. 27. 23:55반응형
https://github.com/keesun/inflearn-the-java-test
위사이트에 들어가서 테스트코드 다운로드 16번째로 commit한거
Mock 객체의 행동
- null을 리턴 (Optional 타입은 Optional.empty 리턴)
- Primitive 타입은 기본 Primitive값
- boolean 은 false
- long 0
- 콜렉션은 비어있는 콜렉션
- Void메소드는 예외를 던지지 않고 아무런 일도 발생하지 않는다.
Mock 객체를 조작해서
- 특정한 매개변수를 받은 경우 특정한 값을 리턴하거나 예뢰를 던지도록 만들 수 있다.
- How about some subbing?
- https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#2
- Argument matchers
- https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#3
- How about some subbing?
- Void 메소드 특정 매개변수를 받거나 호출된 경우 예외를 발생 시킬 수 있다.
- Subbing void methods with exceptions
- https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#5
- Subbing void methods with exceptions
- 메소드가 동일한 매개변수로 여러번 호출될 때 각기 다르게 행동호도록 조작할 수도 있다.
- Stubbing consecutive calls
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import me.whiteship.inflearnthejavatest.domain.Member; import me.whiteship.inflearnthejavatest.member.MemberService; @ExtendWith(MockitoExtension.class) class StudyServiceTest { @Test void createNewStudy(@Mock MemberService memberService, @Mock StudyRepository studyRepository) { StudyService studyService = new StudyService(memberService, studyRepository); assertNotNull(studyService); Member member = new Member(); member.setId(1L); member.setEmail("rlawls1991@mail.com"); when(memberService.findById(any())) .thenReturn(Optional.of(member)) .thenThrow(new RuntimeException()) .thenReturn(Optional.empty()); Optional<Member> byId = memberService.findById(1L); assertEquals("rlawls1991@mail.com", byId.get().getEmail()); assertThrows(RuntimeException.class, () -> { memberService.findById(2L); }); assertEquals(Optional.empty(), memberService.findById(3L)); } }
반응형'백기선(인프런 강의) > 더 자바, 애플리케이션을 테스트하는 다양한 방법' 카테고리의 다른 글
Mock 객체 확인 (0) 2020.05.29 Mock객체 stubbing연습문제 (0) 2020.05.28 Mock 객체 만들기 (0) 2020.05.26 Mockito (0) 2020.05.24 Junit5 조건에 따라 테스트 실행하기 (0) 2020.05.19