我正在与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")

10-06 13:39