프론트엔드/JavaScript

[JavaScript] 클린 코드 - 7. 테스팅

테스트

  • 테스트는 배포하는 것보다 중요하다.
  • 스스로 또는 팀 내에서 정한 Coverage 목표를 달성하는 것에 초점을 둔다.
  • 테스트 주도 개발(Test Driven Development, TDD)은 훌륭한 개발 방법론이다.

 

테스트 컨셉

  • 지엽적인 테스트보단 특정 케이스에 대한 테스트
  • 특히 테스트 케이스는 많을수록 무조건 좋다!
// BAD
const assert = require('assert');

describe('MakeMomentJSGreatAgain', () => {
  it('handles date boundaries', () => {
    let date;

    date = new MakeMomentJSGreatAgain('1/1/2015');
    date.addDays(30);
    assert.equal('1/31/2015', date);

    date = new MakeMomentJSGreatAgain('2/1/2016');
    date.addDays(28);
    assert.equal('02/29/2016', date);

    date = new MakeMomentJSGreatAgain('2/1/2015');
    date.addDays(28);
    assert.equal('03/01/2015', date);
  });
});

// GOOD
const assert = require('assert');

describe('MakeMomentJSGreatAgain', () => {
  it('handles 30-day months', () => {
    const date = new MakeMomentJSGreatAgain('1/1/2015');
    date.addDays(30);
    assert.equal('1/31/2015', date);
  });

  it('handles leap year', () => {
    const date = new MakeMomentJSGreatAgain('2/1/2016');
    date.addDays(28);
    assert.equal('02/29/2016', date);
  });

  it('handles non-leap year', () => {
    const date = new MakeMomentJSGreatAgain('2/1/2015');
    date.addDays(28);
    assert.equal('03/01/2015', date);
  });
});