Today I Learned

TIL JUNIT, MOCKITO

메밀국수가생각나 2021. 12. 1. 00:22

오늘은 테스트 툴인 JUNIT, MOCKITO를 사용하는 방법을 배웠습니다. 

MOCK은 모조품 이란 뜻으로보아 MOCKITO는 모조품을 만들어 주는 라이브러리로 유추해봅니다.

코드는 아래와 같습니다. 

@ExtendWith를 통해서 MockitoExtension 클래스를 부모 클래스로 사용하고

mock을 통해서 가상의 레퍼지토리를 생성한 다음

injectmock을 통해서 가상의 서비스로 합칩니다.

@test 어노테이션이 붙은 메서드를 이용해서 테스트를 진행하고 given메서드와 그 안에 anyString을 통해서 랜덤 한 값을 통해 생성된 값을 예상 값과 비교해서 제대로 값이 생성되었는지를 확인하는 작업을 통해서 테스트를 진행합니다.

@ExtendWith(MockitoExtension.class)
class DMakerServiceTest {

    @Mock
    private DeveloperRepository developerRepository;

    @Mock
    private RetiredDeveloperRepository retriredDeveloperRepository;

    //@Autowired
    @InjectMocks
    private DMakerService dMakerService;

    @Test
    public void testSomething() {

        given(developerRepository.findByMemberId(anyString()))
                .willReturn(Optional.of(Developer.builder()
                        .developerLevel(SENIOR)
                        .developerSkillType(FRONT_END)
                        .experienceYears(12)
                        .statusCode(EMPLOYED)
                        .name("name")
                        .age(12)
                        .build()
                ));
        DeveloperDetailDto developerDetailDto = dMakerService.getDeveloperDetail("memberId");

        assertEquals(JUNIOR, developerDetailDto.getDeveloperLevel());
        assertEquals(FRONT_END, developerDetailDto.getDeveloperSkillType());
        assertEquals(12, developerDetailDto.getExperienceYears());

    }
}