React/Test

JavaScript Unit Test & Jest

고코모옹 2021. 6. 7. 23:37

TDD(Test-driven Development)
출처: 위키디피아

테스트 주도 개발(Test-driven development, TDD)은 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나이다. 우선 개발자는 바라는 향상 또는 새로운 함수를 정의하는 (초기적 결함을 점검하는) 자동화된 테스트 케이스를 작성한다. 그런 후에, 그 케이스를 통과하기 위한 최소한의 양의 코드를 생성한다. 그리고 마지막으로 그 새 코드를 표준에 맞도록 리팩토링한다. 이 기법을 개발했거나 '재발견' 한 것으로 인정되는 Kent Beck은 2003년에 TDD가 단순한 설계를 장려하고 자신감을 불어넣어 준다고 말하였다.

 

  • Jest
    • npm i -D jest

  • Jest 자동 감지
    • npx jest --watchAll

  • package.json scripts 수정
    • scripts : {
          "test" : "jest"
      }

// example.test.js

// describe: 여러 테스트 케이스 묶기
describe('expect test', () => {
  // toBe : primitive 값 일치하는지 판단 
  it('37 to equal 37', () => {
    expect(37).toBe(37);
  });

  // toEqual: 객체가 일치하는지 판단
  it('{age:39} to equal {age:39}', () => {
    expect({ age: 39 }).toEqual({ age: 39 });
  });

  // toHaveLength: 길이 확인
  it('.toHaveLength', () => {
    expect('hello').toHaveLength(5);
  });

  // toHaveProperty: 프로퍼티 존재하는지 판단
  it('.toHaveProperty', () => {
    expect({ name: 'Msko' }).toHaveProperty('name');
    expect({ name: 'Msko' }).toHaveProperty('name', 'Msko');
  });

  // toBeDefined: 정의 되어있는지 판단(undefined가 아닌지)
  it('.toBeDefined', () => {
    expect({ name: 'Msko' }.name).toBeDefined();
  });

  // toBeFalsy: Falsy한 값인지 판단
  it('.toBeFalsy', () => {
    expect(false).toBeFalsy();
    expect(0).toBeFalsy();
    expect('').toBeFalsy();
    expect(null).toBeFalsy();
    expect(undefined).toBeFalsy();
    expect(NaN).toBeFalsy();
  });

  // toBeGreaterThan: 큰 값인지 확인
  it('.toBeGreaterThan', () => {
    expect(10).toBeGreaterThan(5);
  });

  // toBeGreaterThanOrEqual: 크거나 같은지 판단
  it('.toBeGreaterThanOrEqual', () => {
    expect(10).toBeGreaterThanOrEqual(10);
  });

  // toBeInstanceOf: instance인지 확인
  it('.toBeInstanceOf', () => {
    class Foo {}
    expect(new Foo()).toBeInstanceOf(Foo);
  });
});