ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JavaScript Unit Test & Jest
    React/Test 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);
      });
    });

    댓글

Designed by Tistory.