Jest 기초 문법
Jest에서는 정말 다양한 메서드들을 제공하고 있는데,
그중에서도 기본적으로 자주 사용하게 될 메서드에 대해서만 알아보고자 한다.
설명을 위해 간단한 예제 코드를 살펴보고 해당 문법들에 대해 알아보자.
const sum = require("../sum.js");
describe("simple js function test", () => {
let num;
beforeEach(() => {
num = 1;
});
afterEach(() => {
num = 0;
});
it("num is 1", () => {
expect(num).toBe(1);
});
test("adds 1 + 2 to equal 3", () => {
expect(sum(1, 2)).toBe(3);
});
test("array test", () => {
expect([num, sum(1, num)]).toEqual([1, 2]);
});
});
* 테스트 코드는 이전 게시글을 기반으로 작성되었다. (sum이라는 함수)
describe
describe는 테스트를 그룹화하는 즉, 테스트 단위를 묶는 가장 큰 단위이다.
describe에 설명을 적어 테스트 단위들을 하나로 묶어서 관리할 수 있게 해주는 역할을 한다.
심지어 describe는 중첩이 가능해서 테스트를 자유롭게 그룹화해서 관리할 수 있다.
(참고: https://jestjs.io/docs/api#describename-fn)
test, it
Jest에서는 test()와 it()을 통해 기본 테스트를 진행한다.
test()와 it()은 동일한 기능을 수행하며, it이 등장한 배경에는 다른 테스트 프레임워크에서 사용되기 때문에 추가된 문법이다.
(참고: https://jestjs.io/docs/api#testname-fn-timeout)
expect
expect는 값을 테스트할 때마다 사용된다.
expect는 혼자서 사용하는 게 아니라 expect() 안에 테스트할 변수나 값을 넣고 matcher 함수들 즉, toBe/toEqual 같은 것들과 같이 사용된다.
(참고: https://jestjs.io/docs/expect#expectvalue)
toBe, toEqual
toBe는 기본 값을 단순 비교하거나, 객체 인스턴스의 참조 ID를 확인하는데 사용된다.
공식문서에서는 부동 소수점 숫자와는 함께 사용하지 말라고하며 대신 다른 것(toBeCloseTo)을 이용하라고 나와있다.
toEqual은 위 예제처럼 배열이나 객체 내부까지 깊은 비교를 진행해준다.
하지만 두 객체 인스턴스의 내부 값들만 비교해주는 것이지 두 참조 ID가 동일한지를 비교하는 것은 아니다.
(참고: https://jestjs.io/docs/expect#tobevalue / https://jestjs.io/docs/expect#toequalvalue)
beforeEach, afterEach
beforeEach는 각 테스트가 실행되기 전에 실행되는 전처리기이다.
위 예제를 보면 각 test() 와 it()이 실행하기 전에 beforeEach가 실행되며 num이 1로 할당되는 것이다.
afterEach는 각 테스트가 실행된 후에 실행되는 후처리기이다.
위 예제를 보면 각 test()와 it()이 실행한 후에는 num을 0으로 할당한다.
위 예제에서는 쓸모가 없어 보이지만 일부 임시 상태를 정리하는데 유용하게 사용된다.
하나 주의할 점은 before, after에서 실행되는 게 비동기 처리 같은 것이라면 기본 제한시간은 5초이다.
(참고: https://jestjs.io/docs/api#beforeeachfn-timeout / https://jestjs.io/docs/api#aftereachfn-timeout)
참고: https://velog.io/@seongkyun/JEST-%EC%82%AC%EC%9A%A9%EB%B2%95
댓글