[Node.js] Should.js 란

2020. 10. 31. 00:26NodeJS/TDD

1. Should.js 란

 지난 번에 Mocha.js에 대해서 포스팅한 적이 있다. 모카(Mocha.js)는 테스트 주도 개발을 할 수 있는 대표적인 자바스크립트 프레임워크다. 하지만 모카(Mocha.js)를 쓰기 위해서는 node_modules 폴더 안에 있는 assert 모듈을 불러와야한다. Should.js 프레임워크도 모카(Mocha.js)와 다른 것이 없지만, 다른 점이 있다면 여러가지 Assertion 함수를 지원한다는 것이다. 즉, assert 모듈을 불러오지 않아도 된다.

 

 

Should.js를 쓰기위해서는 먼저 프레임워크를 설치해야한다.

npm install should --save--dev
yarn add should --dev

 

 

 바벨 컴파일러, package.json에서의 scripts 속성 설정, 바벨 레지스터 설치에 관한 설명은 지난 포스팅에서 설명을 이미 했으니, 여기서는 설명하지 않겠다. Should.js를 설치했으면 utils.js 파일의 add 함수는 그대로 두고, utils.spec.js 파일을 다음 내용으로 바꾸도록 하자.

import add from "./utils";
import should from "should";
// spec이 들어가 있는파일은 테스트 코드라고 생각하면 된다.

const testCases = [
    {nums:[1,2], expect: 3}, 
    {nums:[3,4], expect: 8},
    {nums:[5,2], expect: 7}
];

const goTest = ({nums, expect}) => {
    describe(`${nums[0]}+${nums[1]}=?`, () => {
        const result = add(...nums);
        const isSame = expect === result ? "성공" : "실패";

        afterEach(() => {
            if(isSame === "실패")
                console.log(`${isSame}: 계산 값 ${result}와 예상 값${expect}가 같지 않습니다.`);
        });
        
            it(`${isSame}`, () => {
                result.should.be.a.Number();
                result.should.be.equal(expect);
            });
    });
}


describe(`테스트 시작`,() => {
    testCases.forEach((test) => {
        goTest(test);
    });
});

위 코드를 yarn test 또는 npm start를 입력해서 utils.spec.js 파일을 테스팅하면, 세 번의 테스트가 진행된다. 

 

result.should.be.Number(): add 함수의 반환 값의 자료형이 무조건 Number여야한다. 그렇지 않으면 에러가 발생한다.

result.should.be.euql(expect): add 함수의 반환 값이 expect와 일치 유무를 비교한다. 틀리면 에러가 발생한다. 

 

확실히, 모카(mocha.js)보다 가독성이 좋은 것 같다.

 

[그림 1] 실행 결과

 

 

2. 참고자료