자바스크립트에서 테스트 코드를 작성하는 것을 도와주는 여러가지 프레임워크들이 있지만, 이번엔 그 중 Jest에 대해 알아보도록 하자.
Nest.js에서는 JavaScript 테스트 프레임워크인 jest를 기본 테스트 프레임워크로 지원하고 있다.
테스트 코드의 모양이 직관적이고 문서화가 잘되어 있어 요즘 많이 활용되고 있는 Framework로서, 여러가지 상황을 설정하고 그 상황에 맞는 로직과 결과가 나오는지 자동으로 테스트해준다.
Jest 이전에는 Mock 함수를 만들기 위해 Sinon과 TestDouble같은 Test Mock 라이브러리를 추가로 설치하여 사용하는 등 여러가지 테스트 라이브러리를 섞어 사용했는데, Jest를 사용하면 거의 모든 기능을 한 번에 지원하기 때문에 아주 효율적인 Test Framework라 할 수 있다.
// 1. 한개 테스트하기
it('더하기 테스트', () => {
const a = 1;
const b = 2;
expect(a + b).toBe(3); // test코드는 우리가 답을 알려주는 것.
});
// 2. 여러개 묶음으로 테스트하기
describe('나의 테스트 그룹', () => {
it('더하기 테스트', () => {
const a = 1;
const b = 2;
expect(a + b).toBe(3);
});
it('곱하기 테스트', () => {
const a = 1;
const b = 2;
expect(a * b).toBe(2);
});
});
// 3. 상품 구매하기 테스트 예제
describe('상품 구매 테스트', () => {
beforeAll(() => {
// 모든 it들 실행하기 전에 딱 1번 실행(예, 로그인)
});
beforeEach(() => {
// 각각의 it들 실행하기 전에 매번 실행(예, 초기값, 초기화 등)
});
it('가진 돈 검증하기', () => {
const result = true; // 돈이 충분하다고 가정
expect(result).toBe(true);
});
it('상품 구매하기', () => {
const result = true; // 상품을 구매했다고 가정
expect(result).toBe(true);
});
});
Jest를 사용할 때 장점 중 하나는 다른 라이브러리 설치 없이 바로 mock 기능을 지원한다는 점이다.