• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

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

22.01.13 08:18 작성 조회수 178

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)

 

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

답변 1

답변을 작성해보세요.

0

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

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