지난 블로그 글 [Spring] ArgumentResolver로 검증 기능 통합하기 와 이어지는 주제입니다. [Spring] ArgumentResolver로 검증 기능 통합하기 우테코에서 진행한 스프링 장바구니 미션 중 Interceptor와 ArgumentResolver에 대해 알게되었고 이를 바로 코드에 적용해 보려 했다. 장바구니(Cart)의 기능들은 우선 1. 호출하는 유저가 시스템에 등록 notbusyperson.tistory.com 이전에 진행한 장바구니 미션에서 ArgumentResolver를 통해 여러 컨트롤러에서 공통으로 필요한 회원 확인 로직에 대한 중복 제거 작업을 진행했다. 그러던 중, ArgumentResolver에서 Service를 참조할지 dao를 참조할지, 아니면 둘 다 참조..
우테코에서 진행한 스프링 장바구니 미션 중 Interceptor와 ArgumentResolver에 대해 알게되었고 이를 바로 코드에 적용해 보려 했다. 장바구니(Cart)의 기능들은 우선 1. 호출하는 유저가 시스템에 등록된 사용자인지 확인 2. 해당 사용의 장바구니에 물건 추가/삭제 등의 과정을 거친다. 여기서 Interceptor를 적용하면 Controller에 진입하기 전에 인증 여부를 검증할 수 있다. -> 컨트롤러 메서드들에서 기본적으로 진행했던 중복 로직을 통합 가능하고, 약간이지만 오버헤드를 줄일 수 있다.(컨트롤러 로직 실행 전에 예외처리 할 수 있으니까) LogInInterceptor public class LoginInterceptor implements HandlerIntercepto..
웹 애플리케이션을 구현하는 우테코 미션 진행 중 전체 테스트 실행 시 특정 Dao 테스트에서 실패하는 경우가 발생했는데, 해당 테스트 코드와 실행 결과를 보면 다음과 같다. @Test @Transactional void findWinners() { gameLogDao.insert(3, "달리", 4); gameLogDao.insert(3, "디노", 4); gameLogDao.insert(3, "저문", 2); winnersDao.insert(3, "달리"); winnersDao.insert(3, "디노"); assertThat(winnersDao.find(3)) .isEqualTo(List.of(new Car(new Name("달리"), 4), new Car(new Name("디노"), 4))); } ..
2023년 2월 7일 오리엔테이션을 시작으로 우아한테크코스 5기 백엔드 교육을 받기 시작했다. 백엔드 교육은 잠실캠퍼스에서 진행하며 레벨 1과 2까지는 고정이라고 한다. 재수 생활 이후로 잠시 잊고 있었던 9호선 지옥철 여정을 당분간 계속하게 될 듯하다. 오리엔테이션에서 들은 얘기 중 가장 기억에 남는 부분은 우테코에 임하는 자세에 관한 이야기였다. 우테코에서 원하는 목표는 무엇인가? 각자 목표가 다를 것이고 그렇기 때문에 방법도 다를 것이다. 어쩌면 목적이 같다고 해도 해당 목적을 향한 방법이 다를 수도 있다. 이러한 상황에서 우리들은 어떻게 목적을 이루고 우테코는 어떻게 우리들을 서포트해 줄 것인가? 이제까지의 교육 또는 강의에서 내가 들어온 방식은 '물고기를 잡아주지 않는다, 그 대신 잡는 방법을 ..
1. 단위 테스트란? 단위 테스트(Unit Test)는 앱의 작은 단위를 사용하여 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차이다. 여기서 모듈의 범위는 정해져 있지 않으며 보통 하나의 기능 또는 메서드를 의미한다. 예를 들어 앱에서 아이디 입력 기능을 만들었다면 해당 기능이 주어진 조건(4~10글자, 특수기호 미포함 등)을 충실히 만족하는지 검증하는 독립적인 테스트가 1개의 단위 테스트가 될 수 있다. 즉, 단위 테스트는 개발을 진행하며 구성하는 기능들이 각각 올바르게 동작하는지를 독립적으로 검증하는 것으로, '기능 A 실행 결과 == 내가 예상한 결과' 의 방식으로 테스트를 진행한다. 2. 단위 테스트의 필요성 단위 테스트의 가장 큰 특징은 기능 단위의 코드 조각을 독립적으로 테스트한다는..