25.3.4.화

kinkin_a·2025년 3월 4일

내일배움캠프 TIL

목록 보기
68/100

🧗‍♀️오늘 한 것

  • 알고리즘 코드카타
  • 코드 리뷰 수정
  • 테스트 코드(메뉴 생성, 조회, 삭제까지)
  • ArgumentResolver 세션 특강

📌테스트 코드 설명!

- 테스트 코드 개념 새로 익히고 배우는 데 시간이 많이 걸린 듯.
그래도 튜터님이 테스트 코드에 대해 진짜 자세히 알려주셔서 정말 감사합니다ㅠ.ㅠ

일단 생각난 대로 정리하자면 테스트 코드는 개발자가 가설을 목표 삼아 증명하기 위해 시나리오를 직접 짜는 개념이라 생각하면 된다. 메소드명이 시나리오의 주제라고 생각하면 된다.

전체적인 구조는 given- when- then 으로 나눠져서
given: 메소드 호출에 필요한 값을 설정한 후,
when: 메소드를 호출해서
then: 원하는 값이 나옴을 확인하면 테스트 코드는 완성된 것!

테스트에 필요한 service와 repository를 mock으로 가짜객체로 만듬.
가짜객체로 만드는 이유는 테스트는 무슨 값을 넣어도 원하는 값이 나오도록 하는 것이 목적이므로, anyLong 등이 적용 가능한 형태인 가짜객체로 만드는 것(+의존성 문제)

주로 given에서 가짜 객체를 이용해 등을 생성한 후, when에서 실제 메소드 실행(이 때는 실제 객체나 값을 넣는다) then에서 증명하면 되는데
실제 코드를 분석하자면

        given(menuRepository.existsByMenuNameAndStoreId(anyString(), anyLong())).willReturn(true);
  • 여기서 menuRepository는 가짜객체기 때문에 anyString, anyLong 등의 값을 넣을 수 있음.

  • willReturn(반환값) 에 원하는 결과값을 넣는다.(if문이면, true로 해야 다음 코드로 넘어가므로 true로 지정)

  • 만약 메소드가 void 면 doNothing() 으로 지정(given은 return 값이 있기에 쓰이는 메소드)

  • 그리고 테스트 커버리지 실행 후 빨간/노란/초록 라인이 뜰텐데,
    틀렸다/맞다가 아니라 이 코드의 실행 유무를 알려주는 것. 빨간은 실행되지 않은 코드라인, 노랑은 주로 if문에 쓰이는데, if문의 총 경우의 수 중 일부 경우만 실행됐을 경우 뜬다.
    빨간 색이 모두 없어지면 테스트 커버리지 100% 완성됨을 의미.

  • 내가 구현한 soft delete 메소드가 마지막이 if문으로 끝났는데, 이 경우는 if문을 통과한 delete 메소드를 직접적으로 테스트 하기보다 if문을 통과한 경우를 테스트하는 것이 테스트 코드에 더 맞음.

-✅spy 조사해 보기!

0개의 댓글