BE: #95 Api 공통 응답으로 리펙토링 + #96 TestContainer를 이용한 테스트 환경 구축 #97
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
Related Issue
Issue Number : closed #95 closed #96
Task Details
Api 공통 응답으로 변경
기본적으로 Api 응답을 통일되게 변경했습니다.
Api 요청 성공 응답
Api 요청 성공 시, success가 true로 오며, 그에 대한 결과가 response로 옵니다.
message는 필요한 상황에서만 옵니다. (대부분은 오지 않습니다)
자세한 응답 결과는 swagger를 참조해주세요.
Api 요청 실패 응답
Api 요청 실패 시, success가 false로 옵니다.
code와 message는 실패시 항상 옵니다.
code는 Test를 돌릴 때, 보다 쉽게 Test Case를 작성하기 위한 것입니다. (테스트 코드 참조)
Hmac 직렬화
저번 PR에서는 HMAC을 구분자로 보내라고 했는데, 이번에 직렬화로 바꿨습니다. 직렬화 한걸 HMAC으로 만들면 됩니다.
Swagger Response 오류
Api 공통 응답으로 바꾸니깐, Swagger가 제너릭을 잘 인식 못하기도 하고, Map<String, Object> 이렇게 Response로 줬더니 인식을 못해서 Wrapper Class 위와 같이 만들어서 해결했습니다.
TestContainer를 이용한 Test 환경 구축
개인적으로 매번 Postman으로 Api 테스트하는게 오바라고 생각했습니다. 그래서 저희 알파프로젝트도 TestContainer를 도입해서, Api 테스트를 진행하고 있습니다. 캡스톤 역시 이를 도입하는게 좋다고 봅니다.
테스트 실행시에 따로 데이터베이스 설정 없이 docker-compose 실행하듯이 DB 환경을 구성할 수 있습니다.
Warning
테스트를 위해서 docker 실행 준비가 되어있어야 합니다. 그리고 해당 이미지가 존재하지 않는 상태라면 처음엔 조금 느릴수도 있습니다.
테스트 환경 구축
위와 같이 실행환경 구축에서 Juit 설정을 위 사진과 같이 해주시면 됩니다.
환경변수는 메인 파일에 있던거 복붙해오면 됩니다.
이렇게 통합테스트를 통해 Api를 손쉽게 테스트 해볼 수 있습니다.
Test Scope & Checklist (Optional)
Review Requirements
개인적으로, 단위테스트까지 다 작성하며 TDD하는건 무리가 있고... API 통합 테스트 정도는 쓰는게 좋을 것 같다 생각합니다.