프로그래머스의 코딩 테스트를 보면
저렇게 테스트 케이스 추가하기가 있는데,
이 녀석을 로컬에서 추가할 수 있으면 좋겠다고 생각해 Jest 를 사용해 자체 테스트를 도입해봤다.
Facebook(현 Meta) 출신의 jest는 React와 더불어 많은 자바스크립트 개발자들로 부터 좋은 반응을 얻고 있는 테스팅 라이브러리이다.
jest는 라이브러리 하나로, Test Runner와 Test Matcher 그리고 Test Mock 프레임워크까지 제공해준다고 하는데, 이 녀석들이 뭔지는 다음에.
npm 명령어를 통해 jest를 설치한다.
npm i -D jest
package.json 에서 스크립트 명령을 test 를 'jest' 로 변경한다.
테스트할 대상의 기능을 모듈로 익스포트한다.
테스트를 위한 파일을 만들고, 방금 익스포트했던 모듈을 임포트하여 테스트한다.
const oddEven = require("./oddEven.js");
it('짝수 홀수 테스트', () => {
expect(oddEven.solution(7)).toBe("Odd");
});
Test 파일은 xxx.spec.js 혹은 xxx.test.js 형식으로 만들어야 한다.
터미널에서 npm test
를 입력하면 끝
※ 아래처럼 그룹으로 묶어서 테스트도 가능하다
describe('멋쟁이 테스트 그룹', () => {
it('짝수 홀수 테스트', () => {
expect(oddEven.solution(7)).toBe("Odd");
});
it('이진 탐색 테스트', () => {
expect(binary.binarySearch([1,4,6,9,100,200], 9)).toBe(3);
});
});
toBe(a) // 예상한 값이 매개변수와 같은 값일 것인지 확인합니다.
toEqual(obj) // 매개변수(객체)와 같은 값일 것이라 예상합니다. 객체가 가진 값의 비교가 가능합니다.
not.toBe(a) // 뒤의 결과를 부정하는 값과 비교합니다.
toBeNull() // 예상한 값이 null 인지 확인합니다.
toBeUndefined() // 예상한 값이 undefined 인지 확인합니다.
toBeDefined() // 예상한 값이 undefined 가 아닌지 확인합니다.
toBeTruthy() // 예상한 값이 truthy 한 값인지 확인합니다.
toBeFalsy() // 예상한 값이 falsy 한 값인지 확인합니다.
toBeGreaterThan(number); // number보다 큰 값인지 확인합니다.
toBeGreaterThanOrEqual(number); // number보다 크거나 같은 값인지 확인합니다.
toBeLessThan(number); // number보다 작은 값인지 확인합니다.
toBeLessThanOrEqual(number); // number보다 작거나 같은 값인지 확인합니다.
toBeCloseTo(float) // float인 매개변수와 같은 값인지 확인합니다. 부동소수점 에러를 해결하기 위해 고안되었습니다.
toMatch(string) // string을 포함하는 문자열인지 확인합니다.
toContain('item') // item을 포함하는 배열(iterator)인지 확인합니다.
toThrow() // 예외를 발생시키는지 확인합니다.
간단한 유닛 테스트를 하나 작성해봤다.
이 글은 jest 에 관한 정말 기초적인 사용법이며 추후 jest 에 관해 더 올릴 생각이다.
jest 공식 문서
https://jestjs.io/docs/getting-started