코드 리뷰
💬 각자 API를 작성하고 Pull Request를 날렸고 코드를 리뷰하는 시간을 가졌다. 자신의 코드에 매몰되지 않고 서로의 코드를 보면서 배울 수 있는 시간을 갖게 해 주기 때문이다. 그리고 보지 못한 내 코드의 문제점들도 알 수 있는 시간이다.
✔ 이미지 파일 검증
💢 아이디어를 업데이트할 때 이미지 파일이 처리된다. 이때 악성 파일(exe)이 들어올 수 있기 때문에 이미지가 맞는지 확인하는 코드가 필요하다는 피드백이 있었다.
✅ ContentType을 통해 이미지인지 확인하는 코드를 작성했다.
➡ 파일에서 내용을 추출해서 어떤 포맷의 파일인지 확인할 수 있는 Apach Tika 이후에 적용해 볼 수 있겠다.
private boolean validateImage(MultipartFile image) { List<String> imageExtensions = List.of("image/jpeg", "image/png", "image/gif", "image/bmp", "image/tiff", "image/webp", "image/heif"); return imageExtensions.contains(image.getContentType()); }
✔ Controller 필수 값이 아닌 경우 required 처리
💢 MultipartFile 타입인 이미지는 클라이언트가 필수로 보내야 하는 데이터가 아니었다. 기본 required = true이기 때문에 문제가 될 수 있다는 피드백이 있었다.
✅ MultipartFile 타입인 이미지에 required = false 적용
@RequestPart(required = false) MultipartFile image
✔ 테스트 코드에서 Service 객체를 중복으로 생성
💢 테스트 코드에서 Service 객체 중복을 제거하고 하나만 생성해야 한다고 피드백을 받았다.
💬 @Test 안에 있어야 Service에 들어가는 Mock들이 초기화가 되어서 중복이 되더라도 메서드에 사용을 했다. 피드백 이후 찾아보니 클래스 멤버 변수로 Mock과 함께 Service를 초기화하는 방법이 있었다.
✅ @InjectMocks을 사용하면 내가 만든 Mock들을 초기화하고 주입할 수 있다.
// 기존 코드 IdeaService ideaService = new IdeaService(ideaRepository, userRepository, s3Service); // 수정 코드 @InjectMocks IdeaService ideaService; // 공통 코드 @Mock IdeaRepository ideaRepository; @Mock UserRepository userRepository; @Mock S3Service s3Service;
'개발일지 > TIL' 카테고리의 다른 글
[230806] Wrapper 클래스 비교 문제 (0) | 2023.08.06 |
---|---|
[230805] [파이널] 프로젝트 진행 (4) (0) | 2023.08.05 |
[230803] [파이널] 프로젝트 진행 (2) (0) | 2023.08.03 |
[230802] [파이널] 프로젝트 진행 (1) (0) | 2023.08.02 |
[230801] [파이널] 기획 및 S.A 작성 (5) (0) | 2023.08.01 |