도메인과 영속성 객체 구분하기

존스노우·2023년 11월 7일
0

  • 이런식으로 도메인 객체를 만들어준다
  • 기존 마이바티스에서 jpa로 컨버팅 하는 프로젝트를할때
  • 모델 부분에 해당되는 객체인대
  • 강의자는 이런식으로 Jpa엔티티 도메인 으로나눈다. 이런식으로 빌더로 관리를하고

  • 레파지토리도 이런식으로
  • Post쪽도 마찬가지

  • 이런식으로 디비 엔티티에서 도메인 객체로 컨버팅하고 구현체에서 넘겨준다.

  • 이런식으로 도메인은 인프라스트럭쳐 모델을 모르는게좋다
  • 디비 엔티티에서 변환작업이 다이루어진다.
  • post도 마찬가지로 작업해보자



  • 도메인에 로직이 생겼다 서비스부분 코드를 바꿔주는과정에서 이런식의 함수가 추가되고
  • 도메인 로직이 생겼으니 테스트를 추가해 줘야된다.

  • 이런식으로 서비스 코드가 변경 된다
  • 서비스 로직이 이전보다 얇아 졌다.

  • 이런식의 응답처리도하고
  • 그런데 리턴값은 회사마다 다르니 참고용만

  • 리스폰스도 따로 이런식으로 함수를 제공해준다

  • 이런식으로 따로 컨트롤러 분리도 좋은거같다

도메인 테스트 추가

  • 포스트 도메인 테스트

  • 응답 테스트 .
  • 이런거 까지 작성해줘야하는데 작성을 해야 될거 같다.

  • 외부에서 주입받을수있도록 변경 도메인객체내 메서드

  • 제어의 역전을 사용해 페이크 홀더를 만들고 주입

  • 업데이트 코드도 작성

  • 주입 코드 테스트 작성

서비스를 소형 테스트로 만들기

  • fake user 레포지토리 만들어주기

  • 이런식으로 미디움 패키지로 중형클래스를 선언해준다

  • 이런식으로 테스트가 구현된다 조금 소름이 돋았다
  • 이런식으로 테스트가 완성될 수 있구나 새로운 걸 배워서 좋다.

  • 페이크 객체들이 만들어지면서 기존 테스트 할수 없었던 분들이 테스트가 된다/

  • 여기서도 유저서비스였던걸 레파지토리로 변경했다
  • 의존성을 줄여 테스트코드를 줄이는 법도있다
  • 그리고 기존 유저서비스에 한가지 동작만 해서 바꿔줘도 무난했다

  • 이런식으로 포스트서비스 테스트도 이렇게 기본작업을 해줬따

  • 이런식으로 디비나 모키토 없이도 소형테스트로 작성해 빠르게 테스트를 만들수 있다

컨트롤러를 소형 테스트로 만들기

  • 원래 서비스는 추상화를 안한다고 이전 강의에서 말하는데
  • 여기서는 컨트롤러 테스트 때문에 추상화를 한다.

  • 제어의 역전에오류
  • 하위 패키지인 서비스가 CertificationService(상위패키지)를 의존하는 그림이됬는대 이러면 안됨
  • 추상화에 집중한나머지 놓친부분

  • 인터페이스의 분리
  • 기존 인터페이스 하나로 하면 구현해야될 메서드가 너무많아서 컨트롤러 테스트에 제약이 생긴다
  • 이런식으로 기존 구현 변경

  • 컨트롤러도 이런식으로 변경된다
  • 컨트롤러도 세분화 하는게 더좋지않을까 ?


  • 이런식으로 컨트롤러를 테스트 흠..무 코드가길고 지저분하긴하다

  • 위 코드가 복잡하고 잇아하니

  • 테스트 컨테이너를 만들자

  • 컨테이너를 이용해서 컨트롤러 테스트를 만들어 준다.

  • 짜다보니 번거롭다 이렇게 또 만들어 주자

  • 이런식으로 간략하게

코드 리펙토링

  • 테스트 컨테이너를 쓰니까 다시 하나로
  • 다시 다통합

  • 사소한거지만 파라미터도 있으니 삭제

  • 사소한 이름 변경

  • 하위 모듈이 상위모듈을 잘못참조하고 있다.
profile
어제의 나보다 한걸음 더

0개의 댓글