[Mocha] 기본 사용법

권민제·2021년 7월 24일
3

TDD

목록 보기
2/3
post-thumbnail
post-custom-banner

Mocha

테스트 코드를 실행시켜주는 Nodejs 테스트 프레임워크

테스트를 위한 다양한 기능들을 제공해준다

⬇️ install

전역 설치

$ npm install -g mocha

devDependencies 설치

$ npm install --save-dev mocha

➡️ 예제

파일구성

mocha_test
├── node_modules
├── test
│   ├── test.js
│   ├── test.spec.js
├── .babelrc
└── package.json

⚠️ javascript ES6 문법으로 작성 ⚠️

javascript ES6 사용법

다른 블로그를 참고 했습니다 추후에 따로 포스팅 예정

패키지 설정

package.json
{
  "name": "basic_test_mocha",
  "version": "1.0.0",
  "description": "",
  "main": "./test/test.js",
  "scripts": {
    "test": "mocha ./test/test.spec.js -r @babel/register"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/cli": "^7.14.8",
    "@babel/core": "^7.14.8",
    "@babel/node": "^7.14.7",
    "@babel/polyfill": "^7.12.1",
    "@babel/preset-env": "^7.14.8",
    "@babel/register": "^7.14.5",
    "babel-loader": "^8.2.2",
    "mocha": "^9.0.2"
  }
}

babel 설정

.babelrc
{
    "presets": ["@babel/preset-env"]
}

테스트 대상

기존에 내가 푼 프로그래머스 알고리즘 문제를 테스트 대상으로 설정했다.
프로그래머스 2단계/ 완전탐색-카펫

test.js
export const solution = (brown, yellow)=>{
    let answer = [0,0];
    const total = brown + yellow
    let a,b;
    for(let i=1; i<=total; i++){
        if(total%i==0){
            a=i
            b=total/i
            if((a-2)*(b-2)==yellow){
                answer[0]=Math.max(a,b)
                answer[1]=Math.min(a,b)
            }
        }
    }
    return answer;
}

테스트 코드

test.spec.js
import solution from "./test.js";
import assert from "assert";

const testCase = [
    { brown:10, yellow:2, expected_value:[4, 3] },
    { brown:8, yellow:1, expected_value:[3, 2] },
    { brown:24, yellow:24, expected_value:[8, 6] }
];

describe("test.js 알고리즘 실행 결과", () => {
    testCase.forEach(({brown, yellow, expected_value},index) => {
        const result = JSON.stringify(solution(brown, yellow));
        const expect = JSON.stringify(expected_value)
        const check = (result, expect)=>{
            assert.strictEqual(result, expect);
        }
        it("test_case "+index, () => {
            check(result,expect);
        })
    });
});
  • describe(testgroup_name) : 테스트그룹

  • it(test_name) : 테스트케이스

  • JSON.stringify() : 결과 값 비교가 배열이기 때문에 비교할 수 있게 배열 => JSON으로 변환 하는 메서드

  • assert : assertion test 작성 모듈 (nodejs 기본 모듈)

  • assert.strictEqual() : === 명령어를 통해 결정되는 엄격한 동일성 테스트 메서드

✅ 실행

$ npm test

🖥️ 결과

테스트 케이스를 하나 틀리게 넣어서 테스트코드를 돌려보았다

테스트케이스를 통과한 부분은 passing
테스트케이스를 실패한 부분은 failing이 뜨고 어느 부분이 틀렸는지 정확하게 로그가 출력된다

profile
성장하는 개발자!
post-custom-banner

0개의 댓글