#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) для реального запроса конечной точки.