Skip to content

테스트

테스트는 출시보다 더 중요합니다. 테스트가 전혀 없거나 불충분한 경우, 코드를 출시할 때마다 어떤 부분도 손상시키지 않았는지 확신할 수 없습니다. 적정 테스트량 결정은 팀의 몫이지만, 100% 커버리지(모든 명령문과 분기)를 달성하면 높은 신뢰도와 개발자의 마음이 편안함을 얻을 수 있습니다. 이는 우수한 테스트 프레임워크 외에도 좋은 커버리지 도구 사용이 필요함을 의미합니다.

테스트를 작성하지 않을 이유는 없습니다. 다양한 우수한 JS 테스트 프레임워크가 존재하므로 팀에 적합한 도구를 선택하세요. 선택 후에는 모든 신규 기능/모듈에 대한 테스트 작성을 원칙으로 삼아야 합니다. 테스트 주도 개발(TDD) 방식을 선호한다면 훌륭하지만, 핵심은 기능 출시나 리팩토링 전에 반드시 커버리지 목표를 달성해야 합니다.

테스트 당 단일 개념

나쁜 예:

javascript
import assert from "assert";

describe("MomentJS", () => {
  it("handles date boundaries", () => {
    let date;

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

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

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

좋은 예:

javascript
import assert from "assert";

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

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

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