我正在使用Akka HTTP 10.0.9,但很难让我的单元测试有一个可用的远程地址。
例如单元测试:
Get("/").withHeaders(
RawHeader("Remote-Address", "192.168.1.1"), RawHeader("X-Forwarded-For", "192.168.1.1")
) ~> route ~> check {
status must_== StatusCodes.OK
}
在网络服务器代码中:
extractClientIP{ clientAddr =>
complete(s"$clientAddr")
}
通过命令行运行应用程序时,将正确返回客户端地址。但是当通过单元测试运行时,客户端地址总是以“未知”
返回我做错了什么?
答案 0 :(得分:0)
这是由 akka http 无法处理测试中的RawHeader
引起的。您可以使用Remote-Address
对象设置 IP 进行测试来解决此问题:
import akka.http.scaladsl.model.headers.`Remote-Address`
Get().withHeaders(
`Remote-Address`(RemoteAddress(new InetSocketAddress("192.168.1.1", 23)))
)