Как протестировать цепочку экспресс-промежуточного программного обеспечения? - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть класс контроллера, который экспортирует массив, содержащий несколько промежуточных программ (использующих 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);

Теперь я хочу написать модульные тесты для моего обработчика запросов, но не могу понять, как протестировать массив промежуточных программ / обработчиков.Должен ли я проверять только «настоящий обработчик» и доверять промежуточному программному обеспечению, чтобы недопустимые запросы не доходили до моего обработчика?Или мой дизайн приложения в корне неверен, что приводит к сложности написания модульных тестов?

Заранее спасибо за помощь:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...