Play2 scala specs2 使用远程地址测试 FakeRequest

Play2 scala specs2 test FakeRequest with remote address

我正在使用 Play! 2.4 scala、spec2 和 Mockito。

我试图在我的一个集成测试中设置一个虚假请求的远程地址,但我找不到正确的方法。

我想做类似于以下代码片段(无法编译)的操作:

route(FakeRequest(GET, "/users/geographicPoint", remoteAddress =  "81.xxx.xxx.xxx"))

我怎样才能轻松做到这一点?

FakeRequest.apply 没有只接受这三个参数的重载。 case class 本身有一些没有默认值的参数,您必须填写这些参数。(在编辑之前)我会说您可以只使用 copy 方法,因为 FakeRequest 是 case class,然后填入你想要的值。但是烦人的是,copy方法是继承自RequestHeader,所以当你copy一个FakeRequest的时候,你并没有在return中得到一个FakeRequest .相反,您必须手动调用构造函数:

import play.api.mvc.AnyContentAsEmpty

new FakeRequest("GET", "/", FakeHeaders(), AnyContentAsEmpty, remoteAddress = "1.2.3.4")
FakeRequest(GET, "/users/geographicPoint").copyFakeRequest(remoteAddress = "81.xxx.xxx.xxx") . worked for me.