jest before, after (each, all), only, skip
2021. 3. 19. 21:18ㆍjavascript/테스팅
이번에는 테스트를 진행하기 전후에 특정 함수를 실행시킬 수 있는 jest 제공 함수를 사용해봅시다.
우선 각함수가 어떤 것을 의미하는지 알아봅시다.
beforeEach
여러 개의 테스트가 시작하기 전 각각의 실행되는 함수입니다. 우선 예제를 봅시다. 각 테스트를 실행하기 전에 number의 값을 바꾸어 주어서 이전에 beforeEach가 실행되고 있는 점을 확인할 수 있다.
js
const fn = require("./hi");
let number = 1;
beforeEach(()=>{
console.log(`각 테스트가 시작하기 전에 실행되는 함수입니다.${number}`);
});
test('3곱하기 3은 9', () => {
expect(fn.add(3, 3)).toBe(9);
number = 2;
});
test('4곱하기 2은 8', () => {
expect(fn.add(4, 2)).toBe(8);
number = 3;
});
test('2곱하기 1은 2', () => {
expect(fn.add(2, 1)).toBe(2);
number = 4;
});
test('5곱하기 5은 25', () => {
expect(fn.add(5, 5)).toBe(25);
number = 5;
});
beforeAll
이 함수의 경우에는 모든 테스트가 시작되기 전 가장 먼저 실행되는 함수입니다. 아래의 사진을 보면 beforeAll이 가장 먼저 사용된 것을 알 수 있다.
const fn = require("./hi");
let number = 1;
beforeAll(()=>{
console.log(`가장 먼저 실행되는 함수`);
});
beforeEach(()=>{
console.log(`각 테스트가 시작하기 전에 실행되는 함수입니다.${number}`);
});
test('3곱하기 3은 9', () => {
expect(fn.add(3, 3)).toBe(9);
number = 2;
});
test('4곱하기 2은 8', () => {
expect(fn.add(4, 2)).toBe(8);
number = 3;
});
test('2곱하기 1은 2', () => {
expect(fn.add(2, 1)).toBe(2);
number = 4;
});
test('5곱하기 5은 25', () => {
expect(fn.add(5, 5)).toBe(25);
number = 5;
});
afterEach
afterEach는 각 테스트가 종료된 후 실행되는 함수입니다.
const fn = require("./hi");
let number = 1;
afterEach(() => {
console.log(`각 테스트가 종료된 후 실행되는 함수야. ${number}`);
});
test('3곱하기 3은 9', () => {
expect(fn.add(3, 3)).toBe(9);
number = 2;
});
test('4곱하기 2은 8', () => {
expect(fn.add(4, 2)).toBe(8);
number = 3;
});
test('2곱하기 1은 2', () => {
expect(fn.add(2, 1)).toBe(2);
number = 4;
});
test('5곱하기 5은 25', () => {
expect(fn.add(5, 5)).toBe(25);
number = 5;
});
afterAll
모든 테스트가 종료되고 난 후 실행되는 함수입니다. 아래 사진을 보면 모든 테스트가 종료되고 난 후에 실행되는 함수라는 것을 알 수 있다.
const fn = require("./hi");
let number = 1;
afterEach(() => {
console.log(`각 테스트가 종료되고 난 후에 실행되는 함수야.`);
});
afterAll(() => {
console.log(`모든 테스트가 종료되고 난 후에 실행되는 함수야.`);
});
test('3곱하기 3은 9', () => {
expect(fn.add(3, 3)).toBe(9);
number = 2;
});
test('4곱하기 2은 8', () => {
expect(fn.add(4, 2)).toBe(8);
number = 3;
});
test('2곱하기 1은 2', () => {
expect(fn.add(2, 1)).toBe(2);
number = 4;
});
test('5곱하기 5은 25', () => {
expect(fn.add(5, 5)).toBe(25);
number = 5;
});
Describe
Describe는 비슷한 테스트를 묶어서 진행되는 코드입니다. 아래와 같은 테스트를 실행해보면 depth가 describe 밑으로 값이 나타나는 것을 확인할 수 있습니다.
const fn = require("./hi");
let number = 1;
describe("곱하기 기능을 테스팅합니다.",()=>{
test('3곱하기 3은 9', () => {
expect(fn.add(3, 3)).toBe(9);
number = 2;
});
test('4곱하기 2은 8', () => {
expect(fn.add(4, 2)).toBe(8);
number = 3;
});
test('2곱하기 1은 2', () => {
expect(fn.add(2, 1)).toBe(2);
number = 4;
});
});
외부의 테스트와 비교해보면 depth가 있음을 볼 수 있다.
Only, Skip
const fn = require("./hi");
let number = 1;
describe("곱하기 기능을 테스팅합니다.",()=>{
test.only('3곱하기 3은 9', () => {
expect(fn.add(3, 3)).toBe(9);
number = 2;
});
test('4곱하기 2은 8', () => {
expect(fn.add(4, 2)).toBe(8);
number = 3;
});
test('2곱하기 1은 2', () => {
expect(fn.add(2, 1)).toBe(2);
number = 4;
});
});
위의 요소를 보면 skipped가 되면서 only가 붙은 테스트만 실행되는 것을 알 수 있습니다.
const fn = require("./hi");
let number = 1;
describe("곱하기 기능을 테스팅합니다.",()=>{
test.skip('3곱하기 3은 9', () => {
expect(fn.add(3, 3)).toBe(9);
number = 2;
});
test('4곱하기 2은 8', () => {
expect(fn.add(4, 2)).toBe(8);
number = 3;
});
test('2곱하기 1은 2', () => {
expect(fn.add(2, 1)).toBe(2);
number = 4;
});
});
skip이 붙은 함수만 skip된 것을 알 수 있습니다.
'javascript > 테스팅' 카테고리의 다른 글
jest React에서 테스팅 해보기(snapShot, text 찾기) (0) | 2021.03.21 |
---|---|
jest mock 함수 (0) | 2021.03.20 |
jest 비동기 테스팅 (0) | 2021.03.18 |
jest 여러가지 to~~(toBe, toEqual, toStrictEqual...) 사용해보기 (0) | 2021.03.17 |
jest로 테스팅 시작해보기 및 테스팅 알아보기 (0) | 2021.03.17 |