Добрый день. Для курсовой по модульному тестированию нужно было быстро написать API сервер, так как хотел больше времени уделить Android клиенту, поэтому выбрал Node.js. До этого ничего не писал на нем, да и javascript особо не трогал. Нашел гайд, сделал все по нему, но теперь мне нужно протестировать мой код. Я могу протестировать сразу POST запрос, который будет вызывать этот метод и сравнивать ответ сервера с ожидаемым, но как мне кажется, код громоздкий, и отвечает за разную логику, я думаю следует разделить на методы и протестировать их как отдельные модули, а потом уже протестировать POST запрос, тогда, как я понял, это уже будет интеграционное тестирование, так как тестируются несколько модулей за раз.
Вопрос в вот в том, как мне разбить этот код, так как я не особо понял синтаксис функций, как мне лучше всего переделать мои лямбды в именованные функции и вызвать их в тех же местах? Заодно хотелось бы услышать пару советов как не стоит делать или в чем я заблуждаюсь.
Хотелось бы увидеть на конкретном примере, как быть например с вот этим участком кода:
Кодexports.user_login = (req, res, next) => {
console.log(req.body);
User.find({'contacts.email': req.body.email})
.exec()
.then(user => {
if (user.length < 1) {
return res.status(401).json({
message: "Auth failed"
});
}
bcrypt.compare(req.body.password, user[0].password, (err, result) => {
if (err) {
return res.status(401).json({
message: "Auth failed"
});
}
if (result) {
const token = jwt.sign(
{
email: user[0].email,
userId: user[0]._id,
roles: user[0].roles
},
process.env.JWT_KEY,
{
expiresIn: "10 days"
}
);
return res.status(200).json({
message: "Auth successful",
token: token
});
}
res.status(401).json({
message: "Auth failed"
});
});
})
.catch(err => {
console.log(err);
res.status(500).json({
error: err
});
});
};
Я его использую при POST запросе:
router.post("/login", UserController.user_login);
Буду благодарен любой помощи.