setTimeout으로 3초뒤에 나오도록 설정했는데 1초뒤에 바로 통과된 모습 왜그런걸까?
fn.js
const fn = {
add : (num1, num2) => num1 + num2,
getName: callback => {
const name = "Mike";
setTimeout(()=>{
callback(name);
},3000);
},
};
module.exports = fn;
jest는 실행이 끝에 도달하면 그냥 끝나버리기 떄문이다.
test함수에 done이라는 콜백함수를 실행해주면 문재해결
try catch문을 통하여 잡아주는 모습
fn.js
const fn = {
add : (num1, num2) => num1 + num2,
getName: callback => {
const name = "Mike";
setTimeout(()=>{
// callback(name);
throw new Error('서버에러..')
},3000);
},
};
module.exports = fn;
promise를 return하면 jest는 resolve할떄까지 기다려준다.
Matcher를 통해 보다 간단하게 가능하다.
fn.js
const fn = {
add : (num1, num2) => num1 + num2,
getName: callback => {
const name = "Mike";
setTimeout(()=>{
callback(name);
},3000);
},
getAge: () => {
const age = 30;
return new Promise((res,rej)=>{
setTimeout(()=>{
// res(age);
rej('error')
},3000);
});
},
};
module.exports = fn;
fn.js
const fn = {
add : (num1, num2) => num1 + num2,
getName: callback => {
const name = "Mike";
setTimeout(()=>{
callback(name);
},3000);
},
getAge: () => {
const age = 30;
return new Promise((res,rej)=>{
setTimeout(()=>{
res(age);
// rej('error')
},3000);
});
},
};
module.exports = fn;