[TIL] 테스트 코드

김민재·2023년 12월 5일
0

TIL

목록 보기
83/172

테스트 코드란?
개발한 코드가 의도한대로 동작하는지 작성하는 코드

  • 테스트 코드의 종류

1) 단위 테스트(Unit Test): 가장 작은 규모의 기능을 테스트한다.

test(): 단위 테스트를 묶어주는 함수.
expect(): 특정 값이 만족되는지 확인하기 위한 함수(if문)

2) 통합 테스트(Integration Test): 다양한 기능을 합쳤을때 생기는 문제를 방지하기 위한 테스트
3) E2E 테스트(End-to-end Test): 끝에서 끝을 의미하는 테스트. 백엔드부터 시작해서 최종적으로 웹 페이지가 원하는 대로 동작하며 원하는 데이터를 잘 보여주느지.

테스팅 프레임워크 JEST

  • yarn init -y
  • yarn add -D jest

package.json 파일 수정하기
"type": "module",
"scripts": {
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js"
},

cross-env
yarn add -D jest cross-env @jest/globals
env실행을 하나로 동일하게 해준다..

"test": "cross-env NODE_ENV=test NODE_OPTIONS=--experimental-vm-modules jest --forceExit",
// jest 일반 실행
"test:silent": "cross-env NODE_ENV=test NODE_OPTIONS=--experimental-vm-modules jest --silent --forceExit",
// jest --forceExit
// 테스트 코드가 완료 되었을 때, 강제로 Jest를 종료한다.
"test:coverage": "cross-env NODE_ENV=test NODE_OPTIONS=--experimental-vm-modules jest --coverage --forceExit",
// jest --silent
// console.log와 같은 메시지가 출력되지 않는다.
"test:unit": "cross-env NODE_ENV=test NODE_OPTIONS=--experimental-vm-modules jest tests/unit --forceExit"
// jest --coverage
// 테스트 코드 검사가 완료된 후 현재 프로젝트의 테스트 코드 커버리지를 출력해준다.

expect 결괏값 검증하기

  • .mockReturnValue(value)
    • Mock 함수의 반환값을 지정합니다.
  • **.toBe(value)**
    • 입력받은 예상값과 결과값이 일치하는지 비교합니다.
    • 만약 객체 인스턴스를 비교하려 한다면, 인스턴스 ID까지 비교하므로 엄격하게 동일한지 검증합니다.
  • .toEqual(value)
    • 입력받은 예상값과 결과값이 일치하는지 비교합니다.
  • .toMatch(regexp | string)
    • 입력받은 문자열이 결과값과 같은지 검증합니다.
    • String 또는 정규표현식으로 검증할 수 있습니다.
  • .toBeTruthy()
    • 결과값이 true인지 검증합니다.
  • .toBeInstanceOf(Class)
    • 입력받은 예상값과 Class가 동일한 Instance인지 검증합니다.
    • Error를 검증할 때 주로 사용합니다.
  • .toHaveProperty(keyPath, value?)
    • 입력받은 객체의 KeyValue가 일치하는지 검증합니다.
  • .toMatchObject(object)
    • 입력받은 객체와 결과 객체가 일치하는지 검증합니다.
    • 만약, 입력받은 객체에는 없지만, 결과 객체에 있는 속성이 있다면 이를 무시하고 일치 여부를 확인합니다.

Global Jest 문법

  • **afterAll(fn, timeout)**
    - 모든 test()완료된 이후에 수행됩니다.
    - 테스트가 완료된 이후 DB에 변경된 데이터를 삭제하거나 Mock을 초기화 하기 위해 사용됩니다.
    • **afterEach(fn, timeout)**
      • test()완료된 이후에 수행됩니다.
      • 테스트코드가 완료된 이후 Mock 또는 변경된 전역 변수를 초기화할 때 사용됩니다.
    • **beforeAll(fn, timeout)**
      • 테스트 코드실행되기 전 최초로 수행됩니다.
      • DB의 데이터를 초기화하거나 전역 Mock을 초기화할 때 사용됩니다.
    • **beforeEach(fn, timeout)**
      • test()실행되기 전에 수행됩니다.
      • 테스트가 실행되기 전, 동일한 설정을 반복해야할 때 사용됩니다.
   
profile
개발 경험치 쌓는 곳

0개의 댓글

관련 채용 정보