inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

데이터베이스 모킹하기

Post controller test 질문입니다.

200

bemodesty306

작성한 질문수 6

0

 
exports.createPost = async (req, res, next) => {
  try {
    const post = await Post.create({
      content: req.body.content,
      img: req.body.url,
      UserId: req.user.id,
    });
///////////////////
    const hashtags = req.body.content.match(/#[^\s#]*/g);
    if (hashtags) {
      const result = await Promise.all(
        hashtags.map((tag) => {
          return Hashtag.findOrCreate({
            where: { title: tag.slice(1).toLowerCase() },
          });
        })
      );
/////////////
      await post.addHashtags(result.map((r) => r[0]));
    }
    res.redirect("/");
  } catch (error) {
    console.error(error);
    next(error);
  }
};
 
위 코드는 제가 post 라우터 unit test를 하기위해서
post를 생성하는 미들웨어를 controller로
분리한 코드입니다.
저기서 슬래시로 감싸진 부분을 어떻게 테스트를 해야할지 모르겠어서 질문드립니다.
또한
jest.mock("../models/post");
jest.mock("../models/hashtag");
const Post = require("../models/post");
const Hashtag = require("../models/hashtag");
로 모델을 mocking하고 시작하였는데
User.hasMany called with something that's not a subclass of Sequelize.Model
라는 테스트 에러가 나와서, 왜 user model에 대한 부분이
에러로 나오는지 이해가 가지 않아서 질문드립니다.
여기 저기를 주석 처리한 결과 위 4줄의 코드가 에러의 원인인 것 같아
질문드립니다.
 
 

mock mongodb jest mysql unittest nodejs Sequelize

답변 1

0

제로초(조현영)

post와 hashtag를 모킹하셔서 User.hasMany(포스트) 부분에서 저 에러가 발생하는 것으로 보입니다.

저라면 저 부분을 별도의 함수로 뺀 뒤에 저 별도의 함수 전체를 모킹해서 테스트 진행했을 것 같습니다. 라이브러리를 직접 모킹하는 건 쉽지 않습니다.

리눅스 노드 설치시 패키지

0

162

0

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

0

908

3

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

0

2285

2

a[title] 질문드립니다

0

378

1

리뉴얼 강의 및 공부 방법

0

583

1

jwt decode

0

1131

1

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

0

392

1

passport와 jwt

0

436

1

리뉴얼 강의

0

421

2

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

0

355

1

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

0

483

1

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

0

507

2

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

0

513

1

질문있습니다.

0

348

1

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

1

3537

1

수업자료는 어디있나요?

0

368

1

질문 있습니디

0

237

1

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

0

419

1

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

0

300

1

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

0

289

1

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

0

368

1

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

0

453

1

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

0

502

2

res.setHeader vs res.cookie

0

1790

3