아직 직접 작성한 쿼리가 없음
해당 변수가 서비스했을때 동작 가능할 임계값을 생각하자.
필요하다면 정규식도 사용해보자.
위에 내용을 참고하여 설계한 내용을 테스트 코드로 먼저 작성 이후 테스트 코드를 따라가면서 구현
**주의**
유닛 테스트는 전체 흐름을 동작한 결과물이 아님.
내가 원하는 입력에 대한 예상 결과값만 나오는걸 유닛 테스트라고 생각.
예를 들어
controller를 테스트 하는데 service 동작이 제대로 수행되는지는 알 필요 없음.
controller를 테스트 하는데 mapper가 제대로 동작하는지 알 필요 없음.
controller를 테스트 하는데 validator가 제대로 동작하는지 알 필요 없음.
우리는 의존있는 객체를 가짜 객체로 만든 후 mock 객체가 올바른 결과를 던져주도록 구현하고
해당 레이어에서 동작하는 코드만 테스트하면 됨.
(처음에는 자꾸 의존된 객체의 동작을 생각하는데 그렇게 생각하지 않으려고 노력해야함)
controllerTest
컨트롤러에서 테스트 해야할것은 해당 url로 api 요청시 어떤 값을 반환할지만 확인 (서비스, 벨리데이터 등등 어떻게 동작하는지 확인할 필요 x)
serviceTest
입력에 대한 비즈니스 로직이 제대로 동작하는지 확인(db에 잘 저장했는지 확인할 필요 x)
비즈니스 로직이 에러를 반환하는 경우도 생각해야함.
(예를 들어 만약 객체가 레퍼지토리에서 받아온 값이 없다면 에러처리 같은 경우)
repositoryTest
db에 원하는 요청대로 저장이 되는지 확인
exceptionHandlerTest
api 요청 후 동작 중 에러가 발생했을때 에러를 처리하고 원하는 결과값을 반환하는지 확인하면 됨
mapperTest
단순히 mapper가 제대로 맵핑 되는지 확인
validatorTest
내가 만든 유효성 검증 어노테이션이나 기본적으로 구현된 검증 어노테이션이 제대로 동작하는지 확인
단순히 프로젝트를 진행하면서 느낀 내 생각이므로 정답이라고 할순 없음. 테스트를 더 편하게 짜기위해 극단적인 유닛테스트로만 진행하는것이 아닌 통합테스트로도 진행할 수 있음. 사람마다 생각하는 방향이 다르기 때문에 혼자하는 프로젝트가 아니라면 팀원과 생각을 맞춘 후 진행하면 될것같음.