JS에서 테스트 자동화를 사용할 때 사용하는 도구는 아래와 같다.
순위는 아래와 같다.
이외에도 다양한 종류의 도구들이 있지만, 공부해볼 도구는 가장 많이 사용되고 있는 Jest에 대해 알아보려고 한다.
먼저 자바스크립트 상에서 테스트를 진행했다.
테스트 진행
프로젝트 생성
$ mkdir tdd-test
$ cd tdd-test
$ npm init -y
$ npm i jest
add.js
function add(x, y) {
return x + y;
}
module.exports = add;
add.test.js
const addNum = require('./add');
// 테스트 케이스 제작 1 (성공)
test('1 더하기 3은, 4입니다.', () => {
expect(addNum(1, 3)).toBe(4);
});
// 테스트 케이스 제작 2 (실패)
test('1 더하기 1은, 1입니다.', () => {
expect(addNum(1, 1)).toBe(1);
});
test 함수는 새로운 테스트 케이스를 제작할 때 사용되며, expect.tobe 함수는 ~를 하면, ~가 될 것이다라는 뜻이다.
test 함수 대신 it 함수 를 사용해도 동일한 결과를 나타낸다. 3
실행 결과
$ jest --watchAll --verbose
# Jest options
# watchAll: 파일 변경을 감지하여 테스트를 자동으로 실행
# verbose: 테스트 수행 결과를 자세하게 출력
만약 테스트에 성공한다면, 성공 결괏값을, 실패한다면 어디서 실패했는지 알려준다.
여러 케이스들을 묶어서 한번에 테스팅하기
describe 함수를 이용하면, 한번에 테스트가 가능하다.
calc.js
module.exports = {
add(x, y) {
return x + y;
},
minus(x, y) {
return x - y;
},
};
calc.test.js
const { add, minus } = require("./calc");
describe("계산기 테스트", () => {
test("덧셈 테스트 > 1 + 2 = 3", () => {
expect(add(1, 2)).toBe(3);
});
test("뺄셈 테스트 > 3 - 1 = 2", () => {
expect(minus(3, 1)).toBe(2);
});
});
이를 이용하면 추후 코드가 바뀌었거나, 다시 작성하는 상황이 발생해도 제대로 동작하고 있는지 테스트가 가능하다.