[Jest] 테스트 코드 작성하기

HR·2022년 7월 27일
0

NodeJS

목록 보기
1/1
post-thumbnail

Node.js, TypeScript 환경에서 테스트 코드를 작성해보자. 테스팅 도구는 mocha와 jest가 유명한데, 참고할 국내 자료가 많은 jest를 사용했다.

  1. jest 설치
npm install -D jest ts-jest @types/jest

테스트 코드는 개발 환경에서만 사용하기 때문에 -D 옵션을 추가한다.

  1. package.json에 명령어 추가
"scripts": {
	"test": "jest"
}
  1. jest.config.ts 파일 생성
module.exports = {
  preset: 'ts-jest',
  testEnvironment: 'node',
};

ts 모듈을 불러와 테스트할 수 있도록 config파일을 생성한다.

  1. test 파일 생성

src 폴더와 같은 위치에서 test 폴더를 만들고, 그 안에 .test.ts로 끝나는 파일을 생성한다. 테스트용 DB로 MongoMemoryServer를 사용했다. 테스트 전에 실행하는 함수인 beforeAll()에 데이터베이스 연결 코드를 넣고, afterAll()에 데이터베이스를 비우는 코드를 넣어서 진행했다. beforeAll()은 미리 테스트용 더미 데이터를 넣어두는 용도로 사용하기도 했음.

https://jestjs.io/docs/getting-started

공식 홈페이지에 테스트하기 위한 다양한 함수가 존재하니 참고하면 좋음. 다음은 게시글 추가 함수를 테스트하는 코드이다.

describe('게시글 추가 TEST', () => {
  test('게시글 추가 성공', async () => {
    const post = await postService.addPost({
      userId: 'test123',
      nickname: 'test',
      contents: 'test contents',
    });
    expect(typeof post).toBe('object');
    expect(post.userId).toEqual('test123');
  });

  test('게시글 추가 실패 - 잘못된 아이디 형식 제공', async () => {
    await expect(
      postService.addPost({
        userId: '',
        nickname: 'test',
        contents: 'test contents',
      })
    ).rejects.toThrow();
  });
});

사용자가 어떤 값을 넣어볼지 모르니 다양한 테스트 케이스를 작성하는 것이 좋을 듯 하다.

테스트 코드를 작성하면 좋은 점은 일단 사전에 오류를 방지할 수 있다는 점인 것 같다. 또 문서용으로 활용할 수 있다는 점?

profile
Hello World :D

0개의 댓글