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.
我正在使用 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.