$ npm install -g mocha
$ npm install --save-dev mocha
mocha_test
├── node_modules
├── test
│ ├── test.js
│ ├── test.spec.js
├── .babelrc
└── package.json
다른 블로그를 참고 했습니다 추후에 따로 포스팅 예정
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"
}
}
.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이 뜨고 어느 부분이 틀렸는지 정확하게 로그가 출력된다