Я довольно новичок в узле, и я впервые тестирую приложение. У меня хорошо получается, что Jest подделывает запрос с помощью функции Jest, как показано ниже:
// Create a fake request
const mockRequest = (sessionData, body) => ({
session: { data: sessionData },
body
});
// Create a fake response
const mockResponse = () => {
const res = {};
res.status = jest.fn().mockReturnValue(res);
res.json = jest.fn().mockReturnValue(res);
return res;
};
const mockNext = () => {
const next = jest.fn();
return next;
};
Так что я могу использовать их следующим образом
doSomething(req, res, next);
expect(res.status).toHaveBeenCalledWith(201);
//or
expect(next).toHaveBeenCalled();
Этого достаточно для всех случаев, пока я не обнаружу, что мое промежуточное ПО для авторизации включает в себя несколько параметров, поэтому я не могу передать поддельные res и req, как показано ниже
exports.isAllowedTo = (par1, par2) => {
return async (req, res, next) => {
try {
//
// Grant logic here that needs par1 and par2
//
if(granted)
next();
else
return res.status(401).json({
error: "You don't have enough permission to perform this action"
});
} catch (err) {
res.status(406).json({
error: err.toString(),
})
}
}
}
Если я проверю isAllowTo(req, res, next)
с помощью mock req, res и next, то мне не хватает 2 параметры, необходимые для функции. На самом деле, когда я это делаю, функция isAllowTo()
даже не вызывается. Я не знаю, как с этим справиться. Любое предложение или подход?