날쌘 개발자

프로젝트 설계(8) - 기술 소개 : JEST 본문

web/챌린지

프로젝트 설계(8) - 기술 소개 : JEST

훈식이 2023. 3. 4. 23:21
728x90

패스트캠퍼스 환급챌린지

13일차 화이팅!~


JEST

JEST is a delightful JavaScript Testing Framework with a focus on simplicity - JEST 공식 홈페이지

프론트엔드 어플리케이션을 쉽게 테스팅 할 수 있도록 다양한 인터페이스를 제공하는 JavaScript용 테스팅 프로엠워크.
메타(전 Facebook)에서 만들었고, 오픈소스로 배포

(create-react-app 프로젝트로 React 프로젝트를 생성하면 기본적으로 내장되어 있음. 문서화가 아주 잘 되어있고, 많은 테크 회사에서 사용 중)

JEST의 철학

JEST를 이용해 테스팅의 기쁨을 느껴보자.

특징

고립됨 (isolated)
  • 각 테스트 케이스는 고립된 환경에서 돌아감
  • 고립되었기 때문에, 테스트 성능을 최대화 시키기 위해 여러 테스트 케이스들을 병렬적으로 돌리는 것이 가능
쉬운 설치 및 시작
  • JEST 내에 테스트 러너(runner), 확인(assertion), 코드 커버리지 등 테스팅에 필요한 거의 대부분의 기능들을 이미 지원하기 때문에 테스팅을 위해 별도의 다른 툴을 설치하지 않아도 됨.
  • Zero-config! 패키지를 설치 후, 별도의 설정 없이 빠르게 테스트 가능
  • {fileNama}.spec.js 형식만 따르면 바로 테스트 실행 가능
스냅샷 (snapshot)
  • 객체 내부의 상태/값을 스냅샷으로 파일에 저장해두는 것.
  • 보통 React의 가상 DOM 트리 구조를 비교하기 위해 사용됨. 다음 테스트에서 객체의 현재 상태가 스냅샷과 동일한지 아닌지 테스팅 하기도 함.
  • 위 테스트가 처음 돌아가면, 스냅샷 파일이 jest에 의해 아래와 같이 자동으로 생성됨.

테스트 셋 설정/분해 (setup/testdown)
  • 테스트가 시작되기 전, 끝난 후에 일어나야 할 일들이 있음. (예를들면, DB와의 커넥션 맺고 끊기, 데이터 리셋 등)
    테스트 단위마다 설정/분해가 일어나야 할 경우
  • beforeEach()
  • afterEach()

테스트 파일 내에서 한번만 설정/분해가 일어나도 될 경우
  • beforeAll()
  • afterAll()

목(Mock) 함수

  • 조작된 값을 리턴하는 가짜 함수를 만드는 것. 이 테스트 코드 내에서 컨트롤 하기 어려운 것들 (ex. 외부 API 값, 함수 등)을 이용해서 테스트 코드를 작성해야 할 때 사용함.
  • jest.fn() 으로 목킹(mocking)을 할 수 있고, 목킹 된 함수가 호출될 경우 기본적으로 undefined를 리턴함.
    • 어떤 값을 리턴할 것인지 설정도 가능
    • 호출 될 때마다 각기 다른 값을 리턴 시킬 수도 있음
    • 비동기 함수도 목킹이 가능
    • 모듈도 목킹 가능

API

describe
  • describe (name, function)의 형태로, 관련된 테스트들을 한데 묶어주는 블럭(block)이다.
  • 중첩이 가능함.

test
  • 테스트의 최소 단위 (a.k.a 하나의 테스트 케이스)
  • 이 테스트 함수 내에서, expect 구문을 활용하여 값을 검증한다.
expect
  • toBe (object) <-> not.toBe (object)
  • toEqua (object) <-> not.toEqual
  • toBeNull() <-> not.toBeNull
  • toBeTruthy() <-> toBeFalsy()
  • toContain (string) <-> not.toContain
  • toGreaterThan (number) <-> toLessOrEqualThan
  • toThrow (exception) <-> not.toThrow
  • toMatch (regex expression) <-> not.toMatch


13일차 인증


본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

 

http://bit.ly/3Y34pE0

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

728x90