问题描述
我有我的 routes.js 之类的
app.get('/',userRules(),validate,mycontroller)
const { query } = require('express-validator');
module.exports = {
userRules: () => [query('team_id').optional().isInt(),query('active_team').optional().isBoolean()],};
我的验证功能看起来像
const { validationResult } = require('express-validator');
const { createMessage } = require('../helpers/index');
module.exports = {
validate: (req,res,next) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
const message = createMessage(errors.array());
return res.status(400).json({ error: true,message });
}
return next();
},}
我想要实现的是 UnitTest 验证函数以了解行为
const httpMocks = require('node-mocks-http');
const { userRules } = require('../../router/validation');
const { validateUsers } = require('../index');
it('should return a 400',() => {
const req = httpMocks.createRequest({
query: {
active_team: 'aaaa',},});
myStub(req,userRules());
const res = httpMocks.createResponse();
validateUsers(req,next);
expect(res.statusCode).toBe(400);
});
我期望的是 400,但我得到的是 200,并且每次都会调用 next() 函数
有没有办法做到这一点? 我知道我可以使用 supertest 但我真的不想要它。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)