Макет Node Js Proxy - PullRequest
       26

Макет Node Js Proxy

2 голосов
/ 23 июня 2019

Я работаю над приложением Node.js / express в машинописном тексте, который включает в себя прокси-маршрут с некоторой настраиваемой бизнес-логикой для определения URL прокси:

import proxy from "http-proxy-middleware";

const controller = diContainer.get<IController>(TYPES.Controller);
const app = express();
app.use("/customProxy", controller.handleProxy());

@injectable()
export class Controller implements IController {
   public handleProxy(): RequestHandler {
        return proxy(
            "**", // proxy all incoming routes
            {
                router: (req: Request) => {           
                   // custom logic to translate route
                   return customRouteBasedOnIncomingRequest;
                },
                onProxyRes: (proxyRes: http.IncomingMessage, req: http.IncomingMessage, res: http.ServerResponse) => {
                    // custom logic to set outgoing response
                    res.setHeader("custom", "header")
                },
             }
        });
    }            
}

Я могу использовать mock-express-request для создания объекта Request / Response, но я не могу понять, как подключить его к proxy.

Есть ли способ ввести макет, который перехватываетhttp-клиент отправляет запрос прокси? В идеале, как-нибудь я мог бы подключить эту функцию к Controller:

public mockedHttpServer(req: Request):Response
{
   const res = new MockExrpessResponse();

   if (req.url == "http://expected.url"){
      res.write("success");
      res.statuscode = 200;
   }
   else{
     res.statuscode = 404;
   }

   return res;
}

Попробовал подключиться к proxy.onProxyReq и вызвать proxyReq.abort() и чем пытаться написатьнепосредственно к Response, но это не мешает отправке запроса в реальном времени.

Есть ли другой способ подключиться к стеку http и выполнить макет сети io?

1 Ответ

1 голос
/ 24 июня 2019

Вы можете использовать что-то вроде:

https://github.com/nock/nock

Вместо того, чтобы пытаться ввести макет, вы можете перехватывать исходящие http-запросы и обслуживать их с помощью фиктивного сервера.

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