Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test : CommentServiceTest & CommentLikeServiceTest 추가 #87

Conversation

GBGreenBravo
Copy link
Collaborator

개요

Test : CommentServiceTest & CommentLikeServiceTest 추가

  • Comment 도메인의 Service에 대해 테스트코드를 작성했습니다.
  • verify()에서 times()를 쓰는 것이 더 명시적인 것 같아, 추가했습니다.
  • 그리고 assertThrows()를 쓰는 경우,
    • BusinessException인지만 확인하기 보다 ErrorCode도 확인하는 게 좋을 것 같아, 이 부분도 비교하도록 작성했습니다.
  • 네이밍이나 테스트코드 양식에서 수정이 필요한 부분 적극적으로 피드백 부탁드립니다..!

Fix : validateParentComment 메서드 추가

Chore : Common 모듈에 java 패키지 추가

closed #54
closed #84

PR 유형

어떤 변경 사항이 있나요?

  • 새로운 기능 추가
  • 버그 수정
  • CSS 등 사용자 UI 디자인 변경
  • 코드에 영향을 주지 않는 변경사항(오타 수정, 탭 사이즈 변경, 변수명 변경)
  • 코드 리팩토링
  • 주석 추가 및 수정
  • 문서 수정
  • 테스트 추가, 테스트 리팩토링
  • 빌드 부분 혹은 패키지 매니저 수정
  • 파일 혹은 폴더명 수정
  • 파일 혹은 폴더 삭제
  • 배포 및 PR 관련

PR Checklist

PR이 다음 요구 사항을 충족하는지 확인하세요.

  • 커밋 메시지 컨벤션에 맞게 작성했습니다. Commit message convention 참고.
  • 변경 사항에 대한 테스트를 했습니다.(버그 수정/기능에 대한 테스트).

@GBGreenBravo GBGreenBravo added 🐞 Fix 버그를 수정한 경우 💻 BE 백엔드 ✅ Test 테스트 코드를 추가, 변경, 리팩토링한 경우 labels Jan 2, 2024
@GBGreenBravo GBGreenBravo self-assigned this Jan 2, 2024
Copy link
Collaborator

@kkkapuq kkkapuq left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다.
엄청 꼼꼼하게 나눠서 작성해주셨네요 ㄷㄷ
리뷰 남긴 부분들 수정 + 몇가지 협의해야 할 내용 참고해주시면 감사하겠습니다.

Copy link
Collaborator

@oxix97 oxix97 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

any() 사용하여 테스트 하셔도 되었는데 하나씩 고생하셨네요 수고하셨습니다~

@@ -95,6 +92,15 @@ public void isValidate(CommentLikeDto commentLikeDto) {
throw new BusinessException(CommentErrorCode.FORBIDDEN);
}

@Transactional(readOnly = true)
public void validateParentComment(Long parentCommentId) {
if (!parentCommentId.equals(NumberConstants.PARENT_COMMENT)) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

여기에서 NumberConstants.PARENT_COMMENT가 현재 0L로 선언되어 있어, 비교했을 때 같지 않으면 대댓글이라는 것이니까 대댓글일 경우 아래의 로직을 수행한다고 이해했는데 맞나요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

넵넵 맞습니다.
해당 메서드에서는 부모댓글의 id를 받고 그것이 유효한 값인지를 판단해야 하는 건데,
0L이라면, 자녀댓글이 아닌, 부모댓글로 생성한다는 뜻이기 때문에 이해하신 바가 맞습니다!

@Mock
private CommentRepository commentRepository;
@InjectMocks
private CommentLikeService commentLikeService;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

형준님이 작성한 테스트 코드에서는 @beforeeach로 초기 setup() 메소드 생성해서 mock 을 만들었는데, 민협님은 setup() 메소드 없이 어노테이션으로 만드셨군요,, 두 가지 mock 사용 방법 알아갑니다

Copy link
Collaborator Author

@GBGreenBravo GBGreenBravo Jan 2, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://velog.io/@qwerty1434/Spring-Bean%EA%B3%BC-Mock-%EA%B0%9D%EC%B2%B4%EB%A5%BC-%EA%B0%99%EC%9D%B4-%EC%A3%BC%EC%9E%85%ED%95%98%EA%B8%B0

위 링크를 참고하시면, 수동으로 의존성을 주입한 이유가 조금 더 명확해 보입니다!
이 코드에서는 어떤 방법을 쓰는지 상관 없습니다. 그러나 모든 걸 Mocking하지 않고 스프링 컨테이너에 있는 객체를 그대로 주입하고 싶은 경우에는 @Autowired를 사용해야 하는데, 그러면 @Injectmocks가 인식하지 못합니다.
따라서 개인적인 의견으로는, 수동으로 명시하는 것(형준님 작성 방식)이 추후의 다른 코드와도 통일성 있는 나은 방법이라고 생각합니다!

@c0olcode
Copy link
Member

c0olcode commented Jan 2, 2024

mock 이해가 드디어 된 것 같네요
코드를 살펴보니 서비스에서 repository와 관련된 내용들은 다 Mocking 후, 필요한 값들은 다 when().thenreturn으로 지정한 값 가져오고 verify 해줌으로 mock에 대한 검증을 해주는군요.. 나머지 서비스에서 진짜 검증해야할 것들은 assertThat 등을 사용한 것으로 이해했습니다!
다음 테스트 코드 짠다면 꼭 직접 해봐야겠네요,, 굿굿 lgtm

Copy link
Collaborator

@kkkapuq kkkapuq left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM :)

@GBGreenBravo GBGreenBravo merged commit 52f3ac5 into Kernel360:develop Jan 2, 2024
1 check passed
@GBGreenBravo GBGreenBravo deleted the feature/#54_Test_Code_for_Comment(댓글)_Domain branch January 2, 2024 06:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
💻 BE 백엔드 🐞 Fix 버그를 수정한 경우 ✅ Test 테스트 코드를 추가, 변경, 리팩토링한 경우
Projects
None yet
4 participants