Spring 테스트 코드

BDDMockito

스프링에서 테스트 코드 작성하기

Mockito란?


사용법


사용 예시

@ExtendWith(MockitoExtension.class)
public class Test {

    //Mock 객체 만들기
    @Mock UserService userService;
    @Mock PlanStateService planStateService;

	//일반 테스트
    @DisplayName("회원정보 조회")
    @Test
    void getUser() {
        
        //given
        
        //값 세팅
        UserDto userDto = new UserDto(1L,null,null,null,null,null);
        
        //예상값 지정
        given(userService.getUser(1L)).willReturn(userDto);

        
        //when
        
        //예상한 메서드 사용하기.
        UserDto user2 = userService.getUser(1L);

        
        //then
        
        //user2와 userDto가 같은지.
        Assertions.assertThat(user2).isEqualTo(userDto);
        //메서드가 한번 사용되었는지.
        then(userService).should(times(1)).getUser(1L);
        
    }
    
    //예외 테스트
    @DisplayName("약속 현황 생성 실패")
    @Test
    void setPlanStateFail() throws IllegalAccessException{
    
        //given
        
        //값 세팅
        PlanStateDto planStateDto = new PlanStateDto(1L, 1L, 1L, null, null, null);
        
        //예상 예외 지정
        willThrow(new IllegalAccessException()).given(planStateService).setPlanState(planStateDto);


        //when
        
        try {
        	//예상한 메서드 사용하기.
            planStateService.setPlanState(planStateDto);
        } catch (IllegalAccessException e) {
        	//예외가 정상 작동시 리턴.
            return;
        }


        //then
        
        //예외 발생이 안될 시 테스트 실패
        Assertions.fail("약속 현황 중복으로 예외가 발생해야 한다.");
    }
}


레퍼런스

https://velog.io/@lxxjn0/Mockito%EC%99%80-BDDMockito%EB%8A%94-%EB%AD%90%EA%B0%80-%EB%8B%A4%EB%A5%BC%EA%B9%8C https://beststar-1.tistory.com/31