Jest 로 테스트 코드 작성하기

PpOee·2020년 5월 15일
3
post-thumbnail

이번에 테스트 코드를 작성하게 된 기회가 있어서 기본적인 개념과 과정을 기록 포스팅하고자한다.


'테스트 코드' 란 무엇일까?

테스트 코드란 코드가 안정적이고 제대로 동작하는지 확인하기 위해 작성하는 코드이다. 이를 통해 특정 동작을 하는 코드가 예상과 동일하게 결과를 잘 내는지 품질 검사하는데 사용한다.


'테스트 코드'를 작성하면 뭐가 좋을까?

  1. 프로그램의 안정성을 보장할 수 있다.
  2. 시간이 흐르고 스펙이 추가되어 내가 코드를 수정하게 되었을 때, 만약 테스트 코드가 기존에 짜여져있었다면, 코드가 기존의 기능도 제대로 하는지 확인할 수 있다.
  3. 개발 테스트 자동화 / 수동 테스트 최소화

Jest 테스팅 프레임워크

이번 테스트 코드를 작성할 때 Javascript Test 프레임워크 중 jest를 사용했다.

우선 프로젝트에 jest를 설치해주었다. 아래의 명령어로 설치할 수 있다.

npm install --save-dev jest
yarn add --dev jest

다음은 package.json 에 scripts test 설정을 해줘야한다.

"scripts": {
    "test": "jest",
  },

이제

npm test 또는 yarn test

를 통해 테스팅을 실행할 수 있다.


테스트 코드 작성하기

특정 경로에서 파일 이름(확장자 포함)만 추출해내는 함수 getFileName 이 있다고 가정하자.

-src
  -getFileName.js
  -getFileName.spec.js (-> 테스트 파일)

현재 간단히 파일 구조는 이렇다.

getFileName.js에 대한 테스트 코드를 작성해보았다.

getFileName.spec.js

import getFilename from "./getFileName";

test('utils.getFilename', () => {
  expect(getFilename('bin/abc.js')).toBe('abc.js');
})

우선 큰 테스트 코드 구조는 아래와 같다.

test('테스트 코드명', () => {
  expect(실행값).toBe(기댓값);
})

코드를 해석해보자면 getFilename('bin/abc.js')의 결과값이 'abc.js'가 되는지 테스트 하는 것이다.

참고로 여기서 .toBe() 는 기댓값을 나타날때 쓰는 Jest가 제공하는 Matcher 함수들 중 하나이다.
아래에서 더 많은 Matcher 함수들을 알아보자.


Matcher 함수들

.toBe()
숫자나 문자와 같은 객체가 아닌 기본형 값을 비교할 때 사용한다.

.toEqual()
객체 단위를 비교할 때 사용한다.

.toBeTruthy() .toBeFalsy()
true(1)인지 false(0)인지 비교한다.

expect(0).toBeFalsy();

.toHaveLength()
배열의 길이를 확인할 때 사용한다.

.toContain()
배열이 특정원소를 담고 있는지 검사할 때 사용한다.

const numbers = ['a', 'b', 'c', 'd'];
expect(numbers).toHaveLength(4);
expect(numbers).toContain('b');

.toMatch()
일반 문자열이 아닌 정규식 기반의 테스트를 할 때 사용한다.

expect(getEmail('gggg@naver.com'))
       .toMatch(/.*naver.com$/);

0개의 댓글