akka http远程地址

时间:2017-07-04 03:41:24

标签: scala unit-testing http akka

我正在使用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")
}

通过命令行运行应用程序时,将正确返回客户端地址。但是当通过单元测试运行时,客户端地址总是以“未知”

返回

我做错了什么?

1 个答案:

答案 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)))
)