[JEST] JEST의 기초

김호준·2021년 11월 7일
0

JEST 란?

  • Jest란 코드가 제대로 동작하는지 확인하는 Test Case 를 만드는 페이스북이 개발한 'JS 테스팅 프레임워크'이다.
  • 추가적인 정보에 대해서 조사하고 수정하자 !!

How To Use Jest ?

 참고자료 https://www.daleseo.com/jest-basic/ 
    1. 프로젝트 생성
    • 프로젝트 디렉터리를 생성하고 NPM 초기화 커맨드로 package.jso 파일을 생성한다.
$ mkdir my-jest
$ npm init -y
$ ls
package.json
    1. Jest 라이브러리 설치
    • Jest 라이브러를 개발 의존성으로 설치한다.
    • 개발 의존성으로 설치하는 것은 package.json 안에 dependencies가 아닌 devDependencies에 저장된다. devDependencies는 개발 시 사용하는 패키지를 설치하는 곳으로 배포시에는 포함되지 않는다.
$ npm i -D jest
    1. test Script 수정
    • package.json 파일에서 test Script를 jest로 수정해준다.
"scripts": {
  "test": "jest"
},
  • 이렇게 수정해줌으로써 터미널에 npm test 입력시 jest 커맨드를 실행할 수 있다.
  • 단일 파일 test 하기

    • npm test로 jest를 실행하게 되면 .test.js 로 끝나는 모든 파일을 테스트한다.
    • 단일 파일만 테스트 하기 위해서는 jest-cli 를 추가로 설치해야 한다.
npm i -g jest-cli
  • 위의 jest-cli를 설치한 이후 아래와 같이 단일 파일에 대한 Jest Test를 진행할 수 있다.
jest 파일명.test.js

테스트 기초 방법

  • Jest를 이용해 Test하는 기초적인 방법에 대해서 작성해보려고 한다.
  • 자세한 테스트 방법들은 기초로 연습하며 익숙해 진 후 추가로 작성하고자 한다.
  • 기초 문법
let temp;
describe("simple test", () => {
  beforeEach(() => {
    temp = 1;
  });
  
  afterEach(() => {
    temp = 0;
  });
  
  test('1 is 1', () => {
    expect(1).toBe(1);
  });
  
  test('[1,2,3] is [1,2,3]', () => {
    expect([1,2,3]).toEqual(1);
  });
})
  • describe

    • Test 단위를 묶는 가장 큰 단위로 테스트시 describe 에 설명된 내용으로 테스트 단위를 크게 분류한다.
  • test, it

    • test(), it()을 통해 기본 테스트를 진행한다. 두 방법의 기능적 차이는 없다 !
  • expect

    • expect() 안에 테스트 할 변수나 값을 넣어준다. 이후 toBe나 toEqual을 이용해 예측값과 비교한다.
  • toBe, toEqual

    • 결과 예측으로 가장 많이 쓰이는 문법으로 toBe는 단순비교, toEqual은 배열이나 객체 내부 깊은 비교를 수행한다.
  • beforeEach, afterEach

    • beforeEach는 test()가 실행횔 때마다 실행해주는 전처리기이다. test를 진행하기 전 최초 1회 실행된다.
    • afterEach는 test()가 실행횔 때마다 실행해주는 후처리기이다. test를 모두 끝내고 마지막에 1회 실행된다.
let temp;
describe("simple test", () => {
  beforeEach(() => {
    temp = 1;
  });
  
  afterEach(() => {
    temp = 0;
  });
  
  test('tmep is 1', () => {
    expect(temp).toBe(1); // true
  });
  
  test('temp is 1', () => {
    expect(temp).toBe(1); // true
  });
});
profile
Go-getter Developer

0개의 댓글