만약 한가지 배열을 crud하는 테스트가 있다고 해보면
각각의 테스트 안에서 배열을 초기화/똑같은 데이터를 주입해야할 것이다.
이러한 불필요한 코드를 줄여주는것이 테스트 전/후 처리이다.
폴더트리
-functions.ts
-Data.ts
-data.test.ts
functions.ts
import Data from "./Data";
export const findAll = () => {
return Data.user;
};
export const create = (user: string) => {
Data.user.push(user);
};
export const destroy = (user: string) => {
Data.user.splice(Data.user.indexOf(user), 1);
};
export const modify = (targetUser: string, modifyUserName: string) => {
const findIndex = Data.user.findIndex((item) => item === targetUser);
Data.user[findIndex] = modifyUserName;
};
Data.ts
const Data: { user: string[] } = {
user: [],
};
export default Data;
이제 위에있는 코드로 테스트를 진행한다고 해보자
매번 test안에 Data.user.push를 해야하는 코드를 작성한뒤에 테스트를 진행해야 될 것이다
이런점을 번거롭지 않도록 test가 실행/실행후 때 특정 코드를 실행시켜주는 기능늘 테스트 전/후 처리라고 한다.
// 매 테스트가 시작할때마다 실행될 코드
beforeEach(() => {
Data.user.push("user1", "user2", "user3", "user4");
});
// 매 테스트가 끝날때마다 실행될 코드
afterEach(() => {
Data.user.length = 0;
});
each가 들어간 만큼 test가 실행/실행후 타이밍에 안에있는 코드를 실행시킨다.
만약 백엔드에서 DB커넥션을 연결하여 테스트 해야할 경우 다음을 쓴다
// 모든 테스트 시작전
beforeAll(()=>{
// db연결
})
// 모든 테스트가 끝난후
afterAll(()=>{
// db끊기
})
// 특정 테스트만 빼고 실행하고싶다면
test.skip()
// 특정 테스트만 실행하고 싶다면
test.only()
// 몇몇 테스트만 묶고싶다면
describe("",()=>{
test()
test()
})