[Node.js_4기] TIL : 트러블슈팅 (24/02/27)

2024. 2. 27. 22:47공부/내배캠 TIL

목차

 

1. 문제

2. 시도

3. 생각정리

 

1. 문제 

 

테스트코드 작성을 했을때, 원래의 코드는 이미 export할때 해당 class를 new로 생성하여 export하고 있어서, 테스트코드를 돌리면 테스트코드가 돌아가는게 아니라 진짜 코드가 돌아가면서 실제 db를 건드는 문제가 있었습니다.

(constructor로 의존성을 주지 않은체 작성했기 때문.)

그래서, 의존성을 주면서 router에서 생성자를 사용해 class를 생성하여 테스트코드 작성이 쉬워지게(?) 리팩토링하였습니다.

이 과정에서 validate-middleware가 service와 repository를 의존하는 상태로 router에 미들웨어로서 작동하면서 문제가 발생하였습니다.

 

2. 시도 

문제의 발단, 해당 코드에 의존성을 삽입하였더니,

미들웨어에서 해당 함수를 읽어오지 못하는 문제가 발생. 

어쩔 수 없이 미들웨어가 생성자로 모듈을 생성해서 작동하는 기묘한 상황이 되어버렸다.

문제는, 이꼴이 났는데도 코드는 돌아간다는 사실.

문제를 해결하는 또다른 방법은 userRepository에서 typeorm엔티티를 직접 가져오는 방법인데, 이러면 constructor로 의존성을 부여하는 의미가 사라지는 문제가 발생한다.

 

3. 생각 정리

 

질문을 통해 여기까지 도달은 했지만, 더 나은 방법은 없는것 같다는 튜터님의 응답. 

문제는 이 경우 미들웨어에 대한 테스트코드를 작성하면 무조건 문제가 생기는 상황.

일단은 여기까지만 구현하고 다음에는 좀 더 직관적인 구조로(uitls를 생성해 의존한다던가) 미들웨어를 구성하길 주문받았습니다.

그리고, 이 상황에서 다른 프레임워크(nest.js등)이였다면 해결하는 방법이 있다고 하셨습니다.

이러한 버그?또는 한계? 때문에 새로운 프레임워크가 필요해진다는 결론에 도달했습니다.

 

수요일에 프로젝트 마무리가 되고, 목요일에 트랙 내에서 발표를 진행할 예정입니다.

내일의 TIL은 아마 테스트코드/Redis에 관련한 내용일 것으로 생각합니다.