[TDD in JS] Mocha & Chai

hzn·2022년 12월 2일
0

TDD

목록 보기
1/7
post-thumbnail

TDD

  • TDD(Test-driven Development)
  • 코드를 작성하기 전에 테스트를 쓰는 소프트웨어 개발 방법론
  • 작은 단위의 테스트 케이스를 작성하고, 이를 통과하는 코드를 작성하는 과정을 반복하는 것
  • 예상하지 못했던 버그를 줄여 소요 시간을 줄일 수 있다

TDD의 개발 주기

  1. Write Failing Test: 실패하는 테스트 코드를 먼저 작성한다.
  2. Make Test Pass: 테스트 코드를 성공시키기 위한 실제 코드를 작성한다.
  3. Refactor: 중복 코드 제거, 일반화 등의 리팩토링을 수행한다.

TDD in JS

  • 테스트 할 .js 파일과 같은 경로에 파일이름.test.js 만들어서 테스트 코드 작성.

mocha (테스트 프레임워크)

  • 테스트 오픈소스 프레임워크

mocha만으로 작성한 테스트 코드

  • if/throw 구문 사용

twice.js

function twice(num) {
	return num * 2
}

twice.test.js

describe('간단한 테스트들', () => {
  it('2 곱하기 2는 4', () => {
  	if(twice(2) !== 4) {
    throw new Error('Test Failed')
  });

  it('3 곱하기 2는 6', () => {
  	if(twice(3) !== 6)) {
    throw new Error('Test Failed')
  });
});

chai (라이브러리)

  • 테스트에 필요한 헬퍼 함수들이 담긴 라이브러리
  • assert, expect, should 등의 메소드 제공
    (모두 비슷한 테스트 기능. 편한 것을 골라 사용. but 스타일 일관성을 위해 섞어쓰지는 않는 것이 좋다)

assert

  • if/throw 구문으로 오류 체크할 필요 없이, 입력값이 true가 아닐 경우 에러를 발생시키는 메소드
describe('간단한 테스트들', () => {
  let assert = chai.assert;

  it('2 곱하기 2는 4', () => {
  	assert(twice(2) !== 4);
  });

  it('3 곱하기 2는 6', () => {
  	assert(twice(3) !== 6);
  });
});

expect

describe('간단한 테스트들', () => {
   let expect = chai.expect;

  it('2 곱하기 2는 4', () => {
  	expect(twice(2)).to.equal(4);
  });

  it('3 곱하기 2는 6', () => {
  	expect(twice(3)).to.equal(6);
  });
});

should

describe('간단한 테스트들', () => {
   let should = chai.should();

  it('2 곱하기 2는 4', () => {
  	should.equal(twice(2), 4);
  });

  it('3 곱하기 2는 6', () => {
  	should.equal(twice(3), 6);
  });
});

0개의 댓글