목록2025/06 (3)
효습
얼마 전에 진행한 프로젝트에서 기획자분이 데이터를 몇 개씩 나눠서 조회할 수 있으면 좋겠다고 말씀하셨다. 그래서 페이지네이션을 적용하는 것이 적절하다고 판단했고, 커서 기반 페이지네이션(Cursor-based Pagination)을 적용했다. 커서 페이지네이션을 적용하면서 QueryDsl도 함께 사용했다. 다만, 반드시 함께 써야 하는 것은 아니다. 나는 커서 값을 생성 시각(created_at)과 id(pk)를 함께 사용했는데, 이러한 복합 조건을 타입 안전하게 처리하기 위해 QueryDsl을 선택하게 되었다. https://velog.io/@znftm97/%EC%BB%A4%EC%84%9C-%EA%B8%B0%EB%B0%98-%ED%8E%98%EC%9D%B4%EC%A7%80%EB%84%A4%EC%9D..
테스트가 어려운 코드모든 코드를 테스트할 수 있는 것은 아니다.어떻게 하면 테스트 가능하게 바꿀 수 있는지 알아보자 하드 코딩된 경로결제 대행업체가 결제 내역이 유효한지 확인할 수 있도록 익일 오전에 결제 결과를 파일로 제공한다고 하자이 파일을 읽어와 DB에 결제 내역을 반영하는 코드는 아래와 같이 작성할 수 있다public class PaySync { private PayInfoDao payInfoDao = new PayInfoDao(); public void sync() throws IOException { Path path = Paths.get("D:\\data\\pay\\cp0001.csv"); List payInfos = Files.lines(path) ..
대역의 필요성테스트를 작성하다 보면 외부 요인이 필요한 시점이 있다.테스트 대상이 파일 시스템을 사용테스트 대상에서 DB로부터 데이터를 조회하거나 데이터를 추가테스트 대상에서 외부의 HTTP 서버와의 통신 테스트 대상이 이런 외부 요인에 의존하면 테스트를 작성하고 실행하기 어려워진다.TDD는 테스트 작성 -> 통과시킬 만큼 구현 -> 리팩토링 의 과정을 짧은 흐름으로 반복해야하는데 외부와 통신이 되지 않으면 테스트를 진행할 수 없게 된다.외부 요인 때문에 테스트가 어려울 때는 대역을 써서 테스트를 진행할 수 있음test double : 테스트에서 대신 사용할 대역대역에는 스텁 , 가짜 , 스파이 , 모의객체가 존재 대역을 이용한 테스트외부 API를 이용하여 카드 번호가 유효한지 검사하는 CardNum..