Mocha 사용법 - Node.js

JeongYong·2023년 8월 17일
0

Javascript

목록 보기
1/1

TDD (Test Driven Development, 테스트 주도 개발)

테스트 주도 개발은 테스트를 이용한 소프트웨어 방법론이다. 켄트 벡에 의해 고안되었다. 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 작업을 반복한다.

TDD가 필요한 이유

  • 개발자가 의도한 로직이 명확한지 알 수 있고, 로직에 대한 확신을 얻을 수 있다.
  • 사전에 다양한 케이스를 고려할 수 있고, 문제가 될 만한 잠재적 오류를 차단할 수 있다.

Mocha (모카)

모카란 테스트 주도 개발을 할 수 있는 대표적인 자바스크립트 프레임워크다. 주로 함수를 테스트할 때 사용되는 툴이다.

Mocha 설치 방법

npm install mocah --save--dev

여기서 npm이란 Node.js로 만들어진 모듈을 웹에서 받아서 설치하고 관리해주는 프로그램이다.

사용법 (ES6 문법)

간단하게 두 개의 매개 변수중 더 큰 값을 반환하는 max() 함수로 예시를 들어보겠다.

  1. 먼저 max()함수를 만들어준다.
//파일 이름은 test.js
export const max = (a, b) => {
  return a >= b ? a : b;
}
  1. 테스트 파일을 만들어준다. 보통 spec.js가 붙으면 테스트를 위한 파일임을 의미한다.
//파일 이름은 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)는 명령어를 통해 결정되는 엄격한 동일성 테스트 메서드

  1. mocha를 실행하기 위해서 @babel/register를 설치해준다. (ES6 문법을 사용했다면 꼭 필요한 작업)
    Babel은 ES6+ 버전 이상의 자바스크립트 코드를 하위 버전의 자바스크립트 코드로 변환 시켜 정상적으로 동작할 수 있도록 한다.

npm install @babel/register --save-dev

package.json 파일에 scripts 속성에 "test" : "mocha test.spec.js -r @babel/register"을 추가해 준다.

  1. 실행결과

    npm test // 실행 명령어

참고: https://taesung1993.tistory.com/73

2개의 댓글

comment-user-thumbnail
2023년 8월 17일

많은 도움이 되었습니다, 감사합니다.

1개의 답글