테스트 주도 개발은 테스트를 이용한 소프트웨어 방법론이다. 켄트 벡에 의해 고안되었다. 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 작업을 반복한다.
모카란 테스트 주도 개발을 할 수 있는 대표적인 자바스크립트 프레임워크다. 주로 함수를 테스트할 때 사용되는 툴이다.
npm install mocah --save--dev
여기서 npm이란 Node.js로 만들어진 모듈을 웹에서 받아서 설치하고 관리해주는 프로그램이다.
간단하게 두 개의 매개 변수중 더 큰 값을 반환하는 max() 함수로 예시를 들어보겠다.
//파일 이름은 test.js
export const max = (a, b) => {
return a >= b ? a : b;
}
//파일 이름은 test.spec.js
import {max} from "./test.js";
import assert from "assert"
describe("max()", () => {
const testCases = [
{num: [0,4], expect: 4},
{num: [7,5], expect: 7},
{num: [1,3], expect: 1},
];
testCases.forEach(({num, expect}) => {
const result = max(num[0], num[1]);
const msg = result === expect ? "성공" : "실패";
it(msg, () => {
assert.strictEqual(result, expect);
});
});
});
describe("title", function() {...})는 구현하고자 하는 기능에 대한 설명이 들어간다.
it("use case 설명", function() {...})의 첫 번째 인수에는 use case에 대한 설명이고, 두 번째 인수에는 use case 테스트 함수가 들어간다.
assert는 assertion test 작성 모듈 (node.js 기본 모듈) -> 검증을 위한 모듈이라고 생각하면됨
assert.strictEqual(result, expect)는 명령어를 통해 결정되는 엄격한 동일성 테스트 메서드
npm install @babel/register --save-dev
package.json 파일에 scripts 속성에 "test" : "mocha test.spec.js -r @babel/register"을 추가해 준다.
npm test // 실행 명령어
많은 도움이 되었습니다, 감사합니다.