Как я могу имитировать IP-адрес для модульных тестов в Express js

#node.js #express

#node.js #выразить

Вопрос:

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

 const ipValidator = (req, res, next) => {
  let ip = req.connection.remoteAddress

  const MOCK = req.app.get('MOCK')
  if (MOCK amp;amp; MOCK.IP) {
    ip = MOCK.IP
  }

  if (isUsIp(ip)) {
    next()
    return
  }

  res.end()
}
  

Ответ №1:

Вместо того, чтобы вставлять макет прямо в код, манипулируйте req.connection.remoteAddress непосредственно в модульном тестировании. Таким образом, вы можете удалить req.app.get('MOCK') вызов из своего маршрута.

Комментарии:

1. Я хочу полностью протестировать свои конечные точки, а не только отдельные или сгруппированные контроллеры / промежуточные программы. Я пытался подделать app.handle и заменить req.connection.remoteAddress, но мне это не удалось. Реальный ip все еще был передан по какой-то неизвестной причине. Я не знаю, как еще имитировать (req, res) для реального запроса конечной точки.