inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

데이터베이스 모킹하기

mockReturnValue 질문

245

bemodesty306

작성한 질문수 6

0

db 에러가 발생하면 next(error) 호출부분 질문드립니다. 

User.findOne부분을 mocking해서 reject를 반환하게 해서 에러처리하는 부분을 테스트하는것으로 이해를 하고 있습니다.

user 컨트롤러에서 findOne이 reject를 반환하니, 

User.findOne({where: {id : req.user.id}});

이 controller 코드에서 req.user.id가 필요없다고 생각하여  req 객체를 빈 객체로 만들고 테스트를 진행하니, req.user가 undefined라는 에러가 나오며 테스트가 실패하였습니다. 

이 부분을 혹시 User.findOne 부분을 mocking 하더라도 findOne 함수 실행을 끝까지 하고 reject를 반환한다고 이해해도 되는것일까요?

 

  test("db 에러 발생하면 next(error)호출", async () => {
    const error = "error for test";
    User.findOne.mockReturnValue(Promise.reject(error));
    await addFollowing(req, res, next);
// req = {}로 넣어도 되지 않을까?
    expect(next).toBeCalledWith(error);
});
 
//////////////////////////////
exports.addFollowing = async (req, res, next) => {
  try {
//질문대상인 User.findOne
    const user = await User.findOne({ where: { id: req.user.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 (error) {
    console.error(error);
    next(error);
  }
};
 

jest Sequelize mongodb mysql nodejs

답변 1

0

제로초(조현영)

User.findOne({where: {id : req.user.id}});

코드의 실행 순서를 잘 생각해보세요.

req.user.id 값에 대한 접근이 findOne 함수 호출보다 먼저 일어납니다.

req.user.id에서 에러가 발생하니 findOne은 호출조차 되지 않습니다.

리눅스 노드 설치시 패키지

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