본문 바로가기

📙17

[만들면서 배우는 클린 아키텍처] 09. 애플리케이션 조립하기 왜 조립까지 신경 써야 할까?코드의 의존성이 올바른 방향을 가리키게 하기 위해서 유스케이스와 어댑터를 그냥 필요할 때 인스턴스화하면 안된다.유스케이스가 영속성 어댑터를 호출하고 스스로 인스턴스화 한다면 코드 의존성이 잘못된 방향으로 만들어진 것이다. 이것이 아웃고잉 포트 인터페이스를 생성한 이유다. 유스케이스는 인터페이스만 알아야 하고, 런타임에 이 인터페이스의 구현을 제공받아야 한다. 객체 인스턴스를 생성할 책임은 누구에게 있을까? 그리고 어떻게 의존성 규칙을 어기지 않으면서 그렇게 할 수 있을까? 설정 컴포넌트(configuration component)아키텍처에 대해 중립적이고 인스턴스 생성을 위해 모든 클래스에 대한 의존성을 가지는 컴포넌트 역할- 웹 어댑터 인스턴스 생성- HTTP 요청이 실제로.. 2024. 10. 17.
[만들면서 배우는 클린 아키텍처] 08. 경계 간 매핑하기 '매핑하지 않기' 전략웹 계층, 애플리케이션 계층, 영속성 계층 모두 Account 클래스에 접근하여 같은 모델을 사용한다.웹 계층과 영속성 계층은 모델에 대해 특별한 요구사항이 있을 수 있다. 도메인과 애플리케이션 계층은 특수한 요구사항에 관심이 없음에도 불구하고 Account 도메인 모델 클래스는 이런 모든 요구사항을 다뤄야 한다. 이는 단일 책임 원칙을 위반한다.기술적인 요구사항이 아니더라도 각 계층이 특정 커스텀 필드를 두도록 요구할 수 있다. 모든 계층이 정확히 같은 구조의 같은 정보를 필요로 한다면 이 전략은 완벽한 선택지다.그러나 애플리케이션 계층이나 도메인 계층에서 웹과 영속성 문제를 다루게 되면 곧바로 다른 전략을 취해야 한다. 어떤 매핑 전략을 선택했더라도 나중에 언제든 바꿀 수 있다... 2024. 10. 16.
[만들면서 배우는 클린 아키텍처] 07. 아키텍처 요소 테스트하기 육각형 아키텍처의 테스트 전략테스트 피라미드비용이 많이 드는 테스트는 지양하고 비용이 적게 드는 테스트를 많이 만들어야 한다. 이 테스트는 하나의 단위(일반적으로 하나의 클래스)가 제대로 동작하는지 확인할 수 있는 단위 테스트들이다. 테스트 피라미드는 테스트가 비싸질수록 테스트의 커버리지 목표는 낮게 잡아야 한다는 것을 보여준다. 그러지 않으면 기능을 만드는 것보다 테스트를 만드는 데 시간을 더 쓰게 되기 때문이다.   단위 테스트피라미드의 토대. 일반적으로 하나의 클래스를 인스턴스화하고 해당 클래스의 인터페이스를 통해 기능들을 테스트한다. 만약 다른 클래스에 의존한다면 의존되는 클래스들은 인스턴스화하지 않고 테스트하는 동안 목(mock)으로 대체한다.통합 테스트연결된 여러 유닛을 인스턴스화하고 시작점이.. 2024. 10. 15.
728x90
반응형