(spring)테스트코드... 재밌을지도...?

전성영·2022년 7월 7일
0

spring

목록 보기
18/31

테스트 코드가 중요한 것을 알고 부랴부랴 공부하면서 진행하고 있다.

오늘은 테스트코드와 프론트쪽 요구사항을 듣고 설계를 바꾸는 데 시간을 많이 썻던 것 같다.
물론 두 가지 다 리더분이 잘해주셔서 도움도 받고 캐리? 받고있는 상황인 거 같다.
테스트 코드를 하면서 배웠던 걸 간단하게 정리해보려고 한다.

1.
registerTodo에서 터지는 Illegal 에러의 내용을 exception에 담는 코드이다.
그 후 assertEquals 로 첫번째 파라미터 값과 비교를 해서 맞으면 pass~

2.

주석을 보면 4번과 매칭이 되어있는 3번이 로그인을 한 다음, 2번과 매칭이 되어있는 1번이 쓴 글을 인증하려고 하는 상황의 코드이다.
물론 예외처리를 해서 잘못된 접근인 것을 테스트 하려고 한다.

신기했던 부분은 이 부분이다.

given(matchingRepository.getMatching(member3.getId())).willReturn(Optional.of(matching2));

TodoService에 confirmTodo() 에는 GetMathing() 이라는 함수가 있다.
그 함수의 역할은 자기 자신과 매칭된 친구를 찾는 것인데, 매칭 상대가 없으면 빠꾸시키는 친구이다.
무튼 3번과 4번이 매칭을 한 상태이고 그 정보가 matching2에 들어있다.
자 그럼 getMatching을 하게되면 matching2가 반환이 되야하는데 그걸 해주는 친구가 given이다.

아무리 repository와 service에@Mock@InjectMocks를 붙여도 안됐었는데 given을 해주니 되었다.
짱짱짱ㅇ맨!

어라 근데 저 두 개의 어노테이션의 역할이 궁금해졌다. 이거만 간단하게 정리하고 자야지..
@Mock은 로직이 삭제된 빈 껍데기라고 한다.
실제로 메서드는 갖고 있지만 내부 구현이 없는 상태이다.
@InjectMocks@Mock 어노테이션이 붙은 객체들을 주입시켜주는 친구이다.
쓰고보니 너무 간단한 거 같은데... 흠..
끝!

profile
Slow and Steady

0개의 댓글