ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Mock 객체 Stubbing
    백기선(인프런 강의)/더 자바, 애플리케이션을 테스트하는 다양한 방법 2020. 5. 27. 23:55
    반응형

    https://github.com/keesun/inflearn-the-java-test 

    위사이트에 들어가서 테스트코드 다운로드 16번째로 commit한거

    Mock 객체의 행동

    • null을 리턴 (Optional 타입은 Optional.empty 리턴)
    • Primitive 타입은 기본 Primitive
      • booleanfalse
      • 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
    • Void 메소드 특정 매개변수를 받거나 호출된 경우 예외를 발생 시킬 수 있다.
      • Subbing void methods with exceptions
        • https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#5

     

    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));
        }
    
    }

     

    반응형
Designed by Tistory.