js에는 여러가지 비동기 객체들이 존재한디 이 비동기 객체들을 어떤식으로 테스트 해야하는지 알아보자
const callbackFunc = (id: string, cb: (id: object) => void) => {
setTimeout(() => {
console.log("wait 0.1 sec");
const user = {
id,
name: `user${id}`,
email: `${id}@test.com`,
};
cb(user);
}, 100);
};
const callbackFuncTest = () => {
test("fetch a user", (done) => {
callbackFunc("1", (id) => {
expect(id).toEqual({
id: "1",
name: "user1",
email: "1@test.com",
});
// done을 콜백함수 맨 마지막에 호출하여야 jest가 콜백함수임을 알고
// 기다린다음 테스트를 진행한다. 그렇지 테스트는 무조건 실패한다.
done();
});
});
};
간단히 await/async를 사용하자
const promiseFunc = (id: string) =>
new Promise((resolve) => {
setTimeout(() => {
console.log("wait 0.1 sec");
const user = {
id,
};
resolve(user);
}, 100);
});
const promiseFuncTest = () => {
// 프로미스는 async/await를 쓰면 자동으로 기다렸다가 테스팅을한다.
test("프로미스 테스트", async () => {
const data = await promiseFunc("id");
expect(data).toEqual({
id: "id",
});
});
};
다음은 모킹(모의 테스트)에 대해서 알아보자