快速验证器之后的单元测试中间件

问题描述

我有我的 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 (将#修改为@)