inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

컨트롤러 분리하기

addFollowings 함수에 대해서 질문이 생겨서 여쭤봅니다.

292

송은우 (탈퇴)

작성한 질문수 0

0

//여기가 user.test.js 입니다.
jest.mock("../models/user");
const User = require("../models/user");
const { addFollowing } = require("../controllers/user");

describe("addFollowing", () => {
  const req = {
    user: { id: 1 },
    params: { id: 2 },
  };
  const res = {
    send: jest.fn(),
  };
  const next = 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("사용자를 못 찾으면 next(error)를 호출함", async () => {
    const error = "사용자 못 찾음";
    User.findOne.mockReturnValue(Promise.reject(error));
    await addFollowing(req, res, next);
    expect(next).toBeCalledWith(error);
  });
});
 
//여기서 부터가 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 (error) {
    console.error(error);
    next(error);
  }
};

계속 같은 코드에서 같은 오류가 나서 혹시나 하는 마음에 github에 있는 것들을 복사해서 가져와서 테스트를 했는데도

Test suite failed to run

    Call retries were exceeded

      at ChildProcessWorker.initialize (node_modules/jest-worker/build/workers/ChildProcessWorker.js:193:21)

 

라는 내용만 나오고 추가적인 에러 메세지는 없는 걸 보니 버전 문제 같은데 혹시 버전 문제가 아니라면 다른 문제가 있는 걸까요?

nodejs mongodb mysql Sequelize

답변 1

0

제로초(조현영)

노드 16버전부터 바뀐 사항입니다. 프로미스에 대한 에러 처리를 안 하셔서 그렇습니다.

Promise.reject 부분은 에러입니다. 따라서 await addFollowings를 try catch로 감싸서 catch에서 error을 받아서 비교하셔야 할 것 같네요. 

리눅스 노드 설치시 패키지

0

172

0

socket.js 에서 referer로부터 roomId를 가져올 때

0

926

3

스트리밍 방식으로 대용량 파일 업로드 & 다운로드 관련 질문

0

2297

2

a[title] 질문드립니다

0

386

1

리뉴얼 강의 및 공부 방법

0

589

1

jwt decode

0

1138

1

node.js 교과서 3판 질문드립니다

0

396

1

passport와 jwt

0

438

1

리뉴얼 강의

0

428

2

혹시 Node.js 교과서 3판 이북은 언제 나오나요?

0

359

1

몽고디비 사용자도 MYSQL부분을 들어야 하나요???

0

488

1

sql 쿼리 로그는 어떤 모듈이 작성하나요?

0

511

2

nunjucks res.render('error'); 작동을 안합니다.

0

518

1

질문있습니다.

0

348

1

multer 한글 파일 업로드시 파일명이 깨져요.

1

3543

1

수업자료는 어디있나요?

0

374

1

질문 있습니디

0

244

1

multer 사용시 file 외 name값은 못받나용?

0

429

1

코드 중복 부분 질문드립니다.

0

303

1

api 만드는 이유 질문드립니다.

0

293

1

Strategy의 done에 대해 질문드립니다.

0

373

1

안녕하세요 fs 권한 관련 질문드립니다

0

456

1

시퀄라이즈 연결질문...

0

510

2

res.setHeader vs res.cookie

0

1797

3