У меня есть класс контроллера, который экспортирует массив, содержащий несколько промежуточных программ (использующих express-validator ), которые проверяют наличие всех необходимых частей запроса и в качестве последнего элемента массива обрабатываютдля запроса:
Класс контроллера:
import { body, ValidationChain } from "express-validator/check";
import { Request, Response, Handler } from "express";
export default class UserController {
signupChainPost: Handler[];
constructor() {
this.signupChainPost = [
this.getEmailExistsMiddleware("email"),
this.getPasswordValidationMiddleware("password"),
this.signupHandlerPost.bind(this)
];
}
private getEmailExistsMiddleware(fieldName: string): ValidationChain {
return body(fieldName, "some error").isEmail().custom((value, { req }) => {
// ...
});
}
private getPasswordValidationMiddleware(fieldName: string): ValidationChain {
return body(fieldName, "some error").isLength({ min: 5 });
}
private async signupHandlerPost(req: Request, res: Response) {
// request handling
}
}
Использование класса контроллера в файле основного сервера с использованием Epxress.js:
const userController = new UserController();
app.post("/user/create", userController.signupChainPost);
Теперь я хочу написать модульные тесты для моего обработчика запросов, но не могу понять, как протестировать массив промежуточных программ / обработчиков.Должен ли я проверять только «настоящий обработчик» и доверять промежуточному программному обеспечению, чтобы недопустимые запросы не доходили до моего обработчика?Или мой дизайн приложения в корне неверен, что приводит к сложности написания модульных тестов?
Заранее спасибо за помощь:)