Play2 scala specs2测试伪造请求和远程地址

Play2 scala specs2测试伪造请求和远程地址,scala,playframework-2.4,Scala,Playframework 2.4,我在和Play一起工作!2.4 scala、spec2和Mockito 我试图在一个集成测试中设置假请求的远程地址,但我找不到正确的方法 我想做一些类似于以下代码片段(未编译)的事情: 如何轻松地执行此操作?FakeRequest.apply没有只接受这三个参数的重载。case类本身有一些没有默认值的参数,您必须填写这些参数。(编辑前)我想说您可以使用copy方法,因为FakeRequest是一个case类,然后填写您想要的值。但令人烦恼的是,copy方法是从RequestHeader继承的,因

我在和Play一起工作!2.4 scala、spec2和Mockito

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

我想做一些类似于以下代码片段(未编译)的事情:


如何轻松地执行此操作?

FakeRequest.apply
没有只接受这三个参数的重载。case类本身有一些没有默认值的参数,您必须填写这些参数。(编辑前)我想说您可以使用
copy
方法,因为
FakeRequest
是一个case类,然后填写您想要的值。但令人烦恼的是,
copy
方法是从
RequestHeader
继承的,因此当您
copy
a
FakeRequest
时,不会得到
FakeRequest
作为回报。相反,您必须手动调用构造函数:

import play.api.mvc.AnyContentAsEmpty

new FakeRequest("GET", "/", FakeHeaders(), AnyContentAsEmpty, remoteAddress = "1.2.3.4")

谢谢,我已经试过了,但是我得到了如下错误:
类型不匹配;[错误]找到:play.api.mvc.RequestHeader[错误]必需:play.api.mvc.Request[?][错误]FakeRequest(GET,“/users/geographicPoint”).copy(remoteAddress=“81.xxx.xxx.xxx”)
@LoannDelgado你说得对。它返回
RequestHeader
,这非常烦人。欢迎使用堆栈溢出!虽然这个代码片段可能是解决方案,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。
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.