테스트 파트의 user.test.js 오류가 나는데 도저히 이유를 모르겠습니다.
208
wocl00
작성한 질문수 7
0
jest.mock("../models/user");
// require을 통해 가지고 오는 객체들을 jest.mock으로 복사한다.
const User = require("../models/user");
const {addFollowing} = require("./user");
describe("addFollowing", ()=>{
const req = {
user : {id : 1},
params : {id : 2},
};
const res = {
status : jest.fn(()=>res),
send : jest.fn(),
};
const next = jest.fn();
const console = {
error : jest.fn(),
};
test("사용자를 찾아 팔로잉을 추가하고 success를 응답해야 함", async()=>{
User.findOne.mockReturnValue(Promise.resolve({
addFollowing(id) {
return Promise.resolve(true);
}
}));
await addFollowing(req,res,next);
expect(res.send).toBeCalledWith('success');
});
test("사용자를 못 찾으면 res.status(404).send(no user)를 호출해야 함", async ()=>{
User.findOne.mockReturnValue(Promise.resolve(null));
await addFollowing(req.res,next);
expect(res.status).toBeCalledWith(404);
expect(res.send).toBeCalledWith('no user');
});
test("DB에서 에러가 발생하면 next(error) 호출한다.", async()=>{
const err = "테스트용 에러";
User.findOne.mockReturnValue(Promise.reject(err));
await addFollowing(req,res,next);
expect(console.error).toBeCalledWith(err);
expect(next).toBeCalledWith(err);
});
}
위의 코드는 user.test.js 코드입니다.
user.js 코드는 깃헙에 올려주신 코드를 복사했습니다.
console.error()를 테스트 하기 위해 가짜객체도 만들었습니다.
test("사용자를 못 찾으면 res.status(404).send(no user)를 호출해야 함"
이 부분에서 Promise.resolve(null)을 했는데 테스트가 왜 try{} 부분이 아니라 catch{} 부분으로
가는 걸까요??
catch{} 부분에서 console.error(err) 부분도 처리가 안되고 , next(err) 부분도 테스트가 안됩니다.
next(err)에서 next가 함수가 아니라고 타입 에러가 뜨는데 왜일까요?
콘솔창의 출력은 다음과 같습니다.
혹시나 하는 마음에 user.js 코드도 아래에 올리겠습니다.
const User = require('../models/user');
exports.addFollowing = async (req, res, next) => {
try {
const user = await User.findOne({ where: { id: req.user.id } });
if (user) {
await user.addFollowing(parseInt(req.params.id, 10));
res.send('success');
} else {
res.status(404).send('no user');
}
} catch (err) {
console.error(err);
next(err);
}
};
ㅎㅎㅎ
ㅎㅎㅎ
답변 1
리눅스 노드 설치시 패키지
0
162
0
socket.js 에서 referer로부터 roomId를 가져올 때
0
907
3
스트리밍 방식으로 대용량 파일 업로드 & 다운로드 관련 질문
0
2281
2
a[title] 질문드립니다
0
376
1
리뉴얼 강의 및 공부 방법
0
583
1
jwt decode
0
1129
1
node.js 교과서 3판 질문드립니다
0
392
1
passport와 jwt
0
434
1
리뉴얼 강의
0
421
2
혹시 Node.js 교과서 3판 이북은 언제 나오나요?
0
355
1
몽고디비 사용자도 MYSQL부분을 들어야 하나요???
0
482
1
sql 쿼리 로그는 어떤 모듈이 작성하나요?
0
506
2
nunjucks res.render('error'); 작동을 안합니다.
0
512
1
질문있습니다.
0
348
1
multer 한글 파일 업로드시 파일명이 깨져요.
1
3536
1
수업자료는 어디있나요?
0
368
1
질문 있습니디
0
237
1
multer 사용시 file 외 name값은 못받나용?
0
417
1
코드 중복 부분 질문드립니다.
0
299
1
api 만드는 이유 질문드립니다.
0
288
1
Strategy의 done에 대해 질문드립니다.
0
367
1
안녕하세요 fs 권한 관련 질문드립니다
0
451
1
시퀄라이즈 연결질문...
0
500
2
res.setHeader vs res.cookie
0
1789
3





