node.js - 如何对一系列快速中间件进行单元测试?
问题描述
我有一个控制器类,它导出一个包含许多中间件(使用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);
现在我想为我的请求处理程序编写单元测试,但我不知道如何测试一组中间件/处理程序。我是否应该只测试“真正的处理程序”并信任中间件以防止无效请求到达我的处理程序?还是我的应用程序设计根本错误导致单元测试难以编写?
在此先感谢您的帮助 :)
解决方案
推荐阅读
- latex - 创建多行未定义控制序列
- batch-file - 使用 FOR 循环重命名带有日期戳的文件。收到错误“存在重复的文件名,或找不到文件。”
- python - 如何获得分类变量和连续变量之间的相关性?
- php - checkout_onepage_controller_success_action 不起作用
- django - Django:购物车匹配查询不存在
- statistics - 如何在pandas中为创建的窗口创建窗口和查找模式(聚合、窗口和查找模式)
- javascript - 如何在角度的更改事件中重新加载组件
- android - Firebase 分析会话持续时间计算错误
- android - Android DatePicker 不可见的标题填充
- node.js - NodeJS 模拟实时视频流