• test 코드에서 Transactional 필요할 수 있다.

  • 협업을 할때 github organization 그룹을 만들어서 관리하자

  • branch auth → feat/auth , issue#1

  • Servicetest → mock (x), save / BeforeEach : 필요 객체 만들어주기

  • Testcode는 가벼워야 한다. 사용하지 않는 Bean 은 등록 x , Mock 객체

  • ResponseEntity 헤더안의 내용을 검증하는 것은 ControllerTest 이다.

  • 기능 추가에 따른 외부 API 테스트가 어렵다. (redis, s3)

  • 매일 혼자 해결한 트러블 슈팅, 추가 기능 구현 한 부분 팀원들에게 설명해주는 시간 가지기(코드 리펙토링 하는 시간도 포함)

  • accestoken 이 만료 되면 클라이언트에있는 refresh token을 api 호출하여 서버에 가져가 db에 있는 refresh token 과 비교하여 accesstoken 재발급, refresh token 값이 같지 않다면 db에서 삭제하고 401(context에서 삭제) 반환후 로그아웃

  • if (accesstoken == null ) error 처리 후에 로직 진행, validateToken → catch 해주었다면 에러를 JwtUtil.validateToken 에서 로그를 찍고 끝내는 것이 아니라 처리를 해주어야한다. (throw), null값을 반환하면 안된다. (NullPointException)

  • “Access”, “Refresh” 등 매직넘버 말고 만들어진 static을 쓰는게 좋다

  • 삼항 연산자 부분보다는 if-elseif-else 부분으로 나누는 것이 좋다.

  • 쿼리 최적화에 있어서 서브쿼리는 지양

  • test 작성 코드에서 dto 부분 생성자 주입이 아니라 mapper 로 주입

  • 테스트에 쓰이는 어노테이션들에 대해 스터디가 필요하다.

  • any() - 클래스의 인스턴스 주소값과 새로 생성한 객체의 주소값을 같다고 인지 하지 않기 때문에 any()로 같음을 나타내준다.

  • Todo는 따로 문서 작성해서 관리하자 (주석 X)

  • 데이터 정규화 관점에서는 null 값이 많이 들어가지 않는 편이 좋다. (ex DeletedAt)

  • 파라미터 값이 없는 경우들을 몰아서 테스트 하는 케이스도 있음.