개발이야기/Node&Nest

Nest.js에서 단위 테스트코드 구성 이해하기

Roslyn 2024. 1. 25. 13:12
반응형

Nest.js 에서 초기에 자동 생성되는 테스트 코드는 실행하면 오류가 발생합니다.

tsconfig.json 에서 다음 항목을 수정해 주어야 합니다.

{
  "compilerOptions": {
	//기존항목
    "types": ["node","jest"],
  },
}

 

다음으로 단위 테스트 파일은 src 폴더 하위에, 파일명에 spec 이란 문자열을 포함하여 작성해야 합니다.

 

member.service 테스트 예시

 

먼저 다음 메소드들에 대해서 알아야 합니다.

 

"describe" 함수는 테스트 코드를 그룹화하고, 해당 그룹에 대한 설정을 제공하는 Jest에서 제공하는 함수 중 하나입니다. 이 함수를 사용하면 테스트를 더 구조화하고 읽기 쉽게 만들 수 있습니다.

 

"beforeEach"는 Jest에서 제공하는 함수 중 하나로, 각 테스트가 실행되기 전에 공통적으로 수행해야 하는 설정이나 동작을 정의할 때 사용됩니다. 즉, beforeEach 블록 안에 작성한 코드는 각 테스트가 실행되기 전에 실행됩니다.

 

"it" 함수는 특정한 테스트 케이스를 나타내며, 테스트에 대한 기대 결과를 포함합니다.

 

"expect" 함수는 테스트에서 예상 결과를 정의하고 검증하는 데 사용되는 함수입니다. 

 

일단 위 4가지 함수를 알면 기본적으로 테스트 함수를 구성할 수 있습니다.

다만, 목업을 위해서 추가적으로 알아야할 것이 spyOn함수입니다.

 

"jest.spyOn" 함수는 주로 테스트에서 함수나 메서드의 동작을 감시하거나 해당 함수를 가로채는 데 사용됩니다. 이 함수를 사용하면 객체의 메서드를 가로채거나, 함수의 호출을 감시하고 반환 값을 조작할 수 있습니다.

 

이제 코드를 작성해 봅시다.

import { Test, TestingModule } from '@nestjs/testing';

describe('여기에 테스트블럭을 나타내는 키워드 작성', () => {
	beforeEach(() => {
    	//여기에 각 테스트 전에 미리해야할 행위 정의
    }).compile();
    
    describe('하위 그룹 요소 정의', () => {
    	it('단위 테스트 명명', () => {
        	expect([기대하는 값]).toBeTruthy(); //toBe... 함수들은 [기대하는 값]을 대조하는 함수
        });
        
    	it('단위 테스트 명명', () => {
        	expect(testObject).toBe(''); //testObject가 '' 일 것을 기대함.
        });
    });
});

 

기본 구성은 위와 같이 됩니다.

테스트 코드를 작성하고 다음 명령으로 실행해 볼 수 있습니다.

npm run test

 

명령이 실행되어 테스트가 정상 종료되면 다음과 같은 화면을 볼 수 있습니다.

 

 

전체적인 단위 테스트의 큰 맥은 이정도로 구성됩니다.

반응형