У меня есть промежуточное программное обеспечение ExpressJS, написанное на TypeScript, и я использую Jest + Supertest для запуска тестов и создания покрытия для него. Я пытаюсь протестировать фрагмент кода, указанный ниже, но не вижу способа заставить мое приложение ExpressJS прослушивать запросы IPv6 только для достижения 100% отчета о покрытии.
export const getAddress = (req: Request, isProxyTrusted: boolean): string => {
if (isProxyTrusted) {
return req.headers['x-forwarded-for'] as string
} else {
if (req.connection.remoteAddress.startsWith('::ffff:')) {
return req.connection.remoteAddress.substr(7)
}
return req.connection.remoteAddress //<---- this code will be never executed
}
}
Я не смог найти никакой информации о том, как заставить ExpressJS прослушивать только IPv6 и даже больше - он слушает его по умолчанию, но предпочитает использовать IPv4. app.listen
вызов с ::
во втором аргументе не имеет никакого эффекта.
app.listen(81, '::')
describe('ipv6 tests', () => {
it('should respond with 200', async () => {
await request(app)
.get('/')
.expect(200)
})
})