해당 포스트는 인프런의 Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트 강의의 도움을 받았습니다
Repository의 추상화가 잘 될 필요가 있습니다.
다음 세 가지 방식을 비교하면서 살펴봅시다.
Service가 JpaRepository를 직접 의존하는 방식입니다.
사실 이렇게 해도 됩니다!
JpaRepository
자체가 인터페이스이기 때문에 테스트할 때는 FakeRepository
가 JpaRepository
를 implementes
하면 되기 때문입니다.
하지만 이런 경우 단점이 있습니다.
Repository 인터페이스를 하나 더 만드는 방식입니다.
의존성 역전입니다.
이렇게 하면 Service는 JpaRepository의 메서드를 모두 알고 있지 않아도 되므로 첫 번째 방식에서 2번은 해결이 되었습니다.
그러나 여전히
개선된 아키텍처에 적용된 방식입니다.
첫 번째, 두 번째 방식에서의 문제점이 모두 해결이 됩니다.
강의에서는 서비스까지는 추상화되지 않아도 좋다는 관점을 가지고 있습니다.
위와 같은 이유 때문이었습니다.
결국 우리가 정말 집중해야 하는 것은 도메인입니다.
기술은 알고나면 당연한 게 많습니다.
기술력이 떨어져도 비즈니스가 좋으면 성공할 수 있습니다.
그런데 우리는 항상 개발할 때
고민하고 있습니다.
도메인이 먼저 개발되어야 합니다.
비즈니스에 집중하는 DDD를 실천합시다.