본문 바로가기

nestjs hexagonal3

Nest.js : Ports and Adapters Architecture 구현하기 (3) - Test Ports and Adapters Architecture를 구현하면서 테스트 코드를 작성중에 생긴일이다. 또한, Jest를 이용하여 void 함수를 어떻게 처리하냐에 대한 내용도 있다! 테스트를 작성하는데, 나는 기능 별로 port를 만들어 port마다 함수를 하나씩 작성한게 아니라 Service 별로(리소스 별로) port를 만들어서 거기다가 함수를 몽땅 때려박는 형식으로 작성을 했다. 그러다 보니 유닛 테스트 코드를 작성할 때, 자그마한 문제가 발생했다. 먼저, 내가 처음에 짜둔 코드를 봐보자. // auth.service.spec.ts class MockUserRepositoryOutboundPort implements UserRepositoryOutboundPort { private readonl.. 2023. 2. 26.
Nest.js : Ports and Adapters Architecture 구현하기 (2) Ports and Adapters 방식을 사용하다보니 문득 문제가 생겼다. 그것은 바로 CustomRepository를 사용하면, Nest가 Repository를 모듈에 주입하지 못한다는 문제점이다. 보통 CustomRepository를 사용하면 다음과 같이 코드를 짤 수 있다. // 물론, 여기서 CutomeTypeOrmModule은 직접 만든 것이다. @Module({ imports: [CustomTypeOrmModule.forCustomRepository([UserRepository]), ], providiers: [ { provider: USER_REPOSITORY_OUTBOUND_PORT, useClass: UserRepository, } ], }) export class CatModule {}.. 2023. 2. 16.
Nest.js : Ports and Adapters Architecture 구현하기 (1) 이 글은 작성자(개발초보)의 뇌피셜일 뿐이며 참고만 하시되, 잘못된 부분이 있다면 지적해 주시기 바랍니다. Nest.js를 배우면서 우연히 ports and adapter architecture에 대해서 알게 되었다. ports and adapter architecture란, 비즈니스 로직과 외부 요소들(예를들어, DB)을 port와 adapter를 이용해서 구분하는 아키텍쳐이다. 우리가 일반적으로 사용하는(나만 이렇게 사용했을 지도 모르지만) service 만을 이용해서 코드를 작성시, service 안에 온갖 코드가 다 들어갈 것이다. 예를들면, DB를 건드리는 코드도 들어갈 수 있고, 검색엔진, email 혹은 외부 라이브러리 등 많은 것들에 관한 코드가 들어갈 수 있을 것이다. 하지만 서비스 로직.. 2023. 2. 3.