ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 내부에서 실행되는 메소드에 인자가 잘 전달되는지 테스트
    프레임워크/JUnit 2024. 4. 17. 02:09

     

     

    이번 글은 스프링 부트 프로젝트에서 컨트롤러를 테스트할 때 사용해보니 괜찮은 것 같아서 정리를 해봅니다.

    스프링을 넘어서 내부에서 호출되는 메소드에 인자를 잘 전달하는가 를 테스트하는 방법입니다. ( 소스코드 )

     


     

     

    1. 테스트 세팅

    컨트롤러 레이어에서 서비스 레이어에 적절한 인자를 전달하는지 테스트하는 방식으로 진행하겠습니다.

    다이어그램의 파란색 화살표에 포커스된 테스트를 작성할 것입니다.

     

     

    컨트롤러 클래스 코드입니다. 아주 간단한 3개의 엔드포인트를 가지고 있습니다.

    ( 게시글 조회 / 게시글 생성 / 게시글 목록 조회 )

     

     

    서비스 코드는 인터페이만 노출할 뿐 내용은 없습니다.

     

     

    서비스에서 사용되는 간단한 dto 입니다.

     

     

    그리고 컨트롤러를 테스트하기 위한 테스트 코드도 작성해줍니다.

     

     

    2. 테스트 작성

    개별 게시글 조회 > 게시글 생성 > 게시글 목록 조회 순으로 테스트 해보겠습니다.

     

    2-1.  조회하려는 게시글의 id를 서비스에 전달한다

    getPost 메소드가 primitive 타입을 인자로 받기 때문에 argThat이 아닌 eq 를 사용해서 검증합니다.

     

     

    2-2.  게시글의 제목을 서비스에 전달한다

    createPost는 인자로 NewPostDto 타입을 받습니다.

    전달된 dto의 타이틀을 newPostDto.getTitle() 으로 가져온 뒤에, equals() 적절한 값이 전달되었는지 확인합니다.

     

     

    2-3.  페이징 처리에 사용될 데이터를 전달한다

    리스트를 가져올 때는 쿼리로 전달해야할 것이 많습니다. param() 으로 추가할 수 있습니다.

    그리고 메소드에 pageable을 전달하면서 적절한 값이 들어가는지 확인할 수 있습니다.

     

     

    3. 테스트 실행결과

    verfy와 argThat 을 사용하면 적절하게 전달되는 인자를 검증할 수 있습니다.

     

     

    감사합니다.

     

     

     

Designed by Tistory.