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줄의 코드가 에러의 원인인 것 같아
질문드립니다.