我正在与Play合作! 2.4 scala,spec2和Mockito。
我试图在我的一项集成测试中设置虚假请求的远程地址,但找不到正确的方法。
我想做类似下面的代码片段(不能编译):
route(FakeRequest(GET, "/users/geographicPoint", remoteAddress = "81.xxx.xxx.xxx"))
我如何轻松地做到这一点?
最佳答案
FakeRequest.apply
没有只接受这三个参数的重载。 case类本身具有一些没有默认值的参数,您必须填写这些参数。(在编辑之前)我想说,您可以使用copy
方法,因为FakeRequest
是case类,然后填写所需的值。但是令人讨厌的是,copy
方法是从RequestHeader
继承的,因此,当您copy
一个FakeRequest
时,您不会得到FakeRequest
作为回报。相反,您必须手动调用构造函数:
import play.api.mvc.AnyContentAsEmpty
new FakeRequest("GET", "/", FakeHeaders(), AnyContentAsEmpty, remoteAddress = "1.2.3.4")