const fn = {
getName: callback => {
const name = "Mike";
setTimeout(() => {
callback(name);
}, 3000);
},
};
module.exports = fn;
test("3초 뒤에 받아오는 이름은 Mike", done =>{
function callback(name) {
expect(name).toBe("Mike");
done();
}
fn.getName(callback);
})
test는 실행이 끝줄에 도달하게 되면 끝나버린다. 그래서 예정되있던 callback함수가 실행이 되지 않는다. 따라서 done 이라는 콜백함수를 전달하면 done 이 호출될때까지 JEST는 테스트를 끝내지 않는다
여기서 api 의 에러를 감지하고싶으면 try~catch로 감싸주면된다.
getAge: () => {
const age = 30;
return new Promise((res,rej) => {
setTimeout(()=>{
res(age);
}, 3000);
});
},
test("3초 뒤에 받아오는 나이는 30", () => {
return expect(fn.getAge()).resolves.toBe(30);
})
test("3초 뒤에 받아오는 나이는 30", async() => {
const age = await fn.getAge();
expect(age).toBe(30);
})