我有一个控制器类,该类导出包含多个中间件(利用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);
现在,我想为我的请求处理程序编写单元测试,但是我不知道如何测试一组中间件/处理程序。我应该只测试“真实处理程序”并信任中间件以防止无效请求到达我的处理程序吗?还是我的应用程序设计从根本上错了,导致单元测试难以编写?
提前感谢您的帮助:)