꼬꼬마 블로그

꼬꼬마의 기술 블로그

기존 Express의 환경에서 테스트 코드를 짜 봤었고 NestJS에서는 테스트 코드를 짜 보지 못했습니다. 의존성 주입을 프레임워크에서 맡아 관리하기 때문에 조금 삽질을 했던 것 같습니다.

 

일단 NestJS는 기본적으로 Jest를 이용한 테스트 세팅이 되어있습니다.

폴더 구조

 

위와 같은 구조를 가집니다.

 

기본 파일

각각의 파일의 코드를 확인해보도록 하겠습니다.

 

user.schema.ts

스키마는 nestJS의 공식문서에 소개된 mongoose 사용 방법과 동일하게 정의해주었습니다.

 

 

user.repository.ts

 

service에서 mongoose의 model을 주입하는게 아닌 repository에 주입하여 repository에서 데이터에 접근합니다.

 

 

user.service.ts

서비스 레이어는 repository를 주입받습니다. 저희가 테스트할 부분입니다.

 

 

테스트 코드

이제 서비스 레이어를 테스트할 코드를 살펴보도록 하겠습니다.

 

$ nest g service user

해당 테스트 파일은 위의 명령어를 통해 service파일이 만들어지며 함께 만들어지는 파일입니다.

 

 

user.service.spec.ts

 

이 부분에서 userService와 userRepository객체를 만들어줍니다.

 

이때 UserRepository는 Model을 생성자로 주입받기 때문에 Mock Model을 넣어주어야 합니다. 하지만 repository의 메서드를 mocking 하기에 Model의 내용까지 정의해줄 필요는 없습니다.

 

jest.spyOn을 통해 userRepository의 함수를 mocking 해줍니다. 마지막으로 해당 서비스의 결과를 테스트해주면 됩니다.

 

아직 테스트 코드 작성이 미숙하며 Nest, Mongo와 같은 기술은 낯섭니다. 부족하거나 잘못된 부분은 충고 부탁드립니다.

'개발 > 백엔드' 카테고리의 다른 글

클린 아키텍처 with Spring Boot  (2) 2021.05.08
Spring과 NodeJS 선택 기준  (0) 2021.04.22
Github Actions에 NodeJS 환경변수 설정  (0) 2021.04.21
[NestJS] Docker를 이용한 배포  (6) 2021.02.18