
<aside>
1️⃣ Persistence Layer
</aside>
- Repository test
- Data Access의 역할
- 여기에는 비즈니스 가공 로직이 포함되어서는 안된다.
- Data에 대한 CRUD에만 집중한 레이어
<aside>
2️⃣ Business Layer
</aside>
- Service test
- 통합테스트다.
- 비즈니스 로직을 구현하는 역할
- Persistence Layer와의 상호작용(Data를 읽고 쓰는 행위)을 통해 비즈니스 로직을 전개시킨다.
- 트랜잭션을 보장해야 한다. (롤백이 가능하도록 해야한다.)
<aside>
3️⃣ Presentation Layer
</aside>
- Controller test
- 외부 세계의 요청을 가장 먼저 받는 계층이다.
- 파라미터에 대한 최소한의 검증을 수행한다.
- 하위 레이어를 전부 mocking처리하고 단위테스트처럼 진행한다.
- MockMvc
- 테스트 하기 위해서 준비해야 할것을 가짜로 처리할 수 있도록 해주는것
- Mock(가짜) 객체를 사용해서 스프링 MVC 동작을 재현할 수 있는 테스트 프레임워크이다.
<aside>
4️⃣ Layered Architecture의 단점
</aside>
- 도메인과 너무 강결합이다.
- 해결방안으로 Hexagonal Architecture라는게 나왔다.
- 도메인이 외부를 모르도록 설계한다. di를 확장시켜서 만들게됨