NestJs+Sequelize 조합에서 jest로 mock함수 사용하기

25gStroy·2022년 3월 4일
0

Nest.js

목록 보기
23/23

NestJs+Sequelize 조합을 사용한 이유

기본적으로 제가 알기론 TypeOrm은 아직 1점대 버전이 아니고 토이프로젝트에서 사용해 본 결과 관계가 복잡해 질수록 orm함수들을 가져오지못하고 쿼리빌더로 직접 쿼리를 짜서 데이터를 가져와야했습니다. 그래서 그때 토이프로젝트에서 느낀바론 '이럴꺼면 orm을 왜쓰지?'라는 의문이 생겼습니다. 제일처음 배운 orm이 Spring의 JPA여서 그런지 typeOrm은 너무 불편한 orm기술이였습니다. 그래서 js진영에서 탄탄하고 안정적인 orm을 제공해주는 sequelize의 조합으로 프로젝트를 진행 해 봤습니다.

Nestjs+Sequelize 단점

해당 조합으로 진행된 프로젝트나 레퍼런스자료가 너무 없어서 진짜 이해도가 떨어진 상태에서 작업을 하니까 극악의 생산성저하가...ㅠㅠ 그냥 제가 못하는 겁니다.... 열심히 하겠습니다!

그리고 해당 조합으로 했을때 트랜젝션처리가 되지 않는데 이를 아시는분은 댓글해주시면 큰절올리겠습니다

NestJs+Sequelize 조합에서 jest로 mock함수 사용하기

본격적인 예기 입니다. 저는 TestCode를 짜기위해서 여러가지 레퍼런스를 찾아 봤는데 다음과 같이 mock함수를 주입해서 사용하는 레퍼런스가 대부분 이였습니다.

하지만 이것처럼 아름답게 주입이 돼면 좋겠지만 TABLE의 관계가 복잡해지고 프로그램이 커져서 그런지 전혀 mock함수를 spy해주지 않는것입니다...
spyOn함수는 jest에서 제공하는 함수 입니다. 스파이라는 말 그대로 스파이로 등록해 놓으면 그 등록된 함수가 내부에서 실행되는 함수를 호출했을때 spy된 함수를 감시하며 어떤값으로 호출됐고 몇번호출됐는지에 대해서 테스트 해 볼 수 있습니다.

해결했던 방법

레퍼런스가 없어서 한참해맸지만 방법은 간단했습니다.

다음과같이 Cat라는 모델의 레파지토리함수인 findOne을 스파이 하고싶다면 다음과같이 등록을 해주고 사용하면 되는것이였습니다...
이렇게 간단한 방법을 몰라서 이렇게 해매인 저의 개발 실력에 반성을 하며... 더 좋은 방법이있다면 알려주시면 감사하겠습니다!

profile
애기 개발자

0개의 댓글