Playframework 2.0 如何在play2.0中操作测试会话、请求和响应

Playframework 2.0 如何在play2.0中操作测试会话、请求和响应,playframework-2.0,Playframework 2.0,嗨,我有一个身份验证服务,它可以处理请求(一些头数据和Cookie)、响应(设置或删除Cookie)和会话(存储用户ID和记忆信息) 在Play1.x中,很容易伪造请求、响应、Cookie和会话。可以使用Session.current().set(new Session())轻松设置它。在play 2.0中,这不再有效 如何向请求添加cookie?我如何操纵会话?我看到有伪造申请和伪造申请,但我没有得到它,如何与他们合作 任何提示都非常感谢。游戏2.0还没有准备好,但在游戏2.1(以及当前主控模

嗨,我有一个身份验证服务,它可以处理请求(一些头数据和Cookie)、响应(设置或删除Cookie)和会话(存储用户ID和记忆信息)

在Play1.x中,很容易伪造请求、响应、Cookie和会话。可以使用
Session.current().set(new Session())
轻松设置它。在play 2.0中,这不再有效

如何向请求添加cookie?我如何操纵会话?我看到有伪造申请和伪造申请,但我没有得到它,如何与他们合作


任何提示都非常感谢。

游戏2.0还没有准备好,但在游戏2.1(以及当前主控模式)中,您可以编写:

fakeRequest(GET,“/foo”)
.带session(“bar”、“baz”)
.用曲奇(曲奇(“bah”,“toto”));

可以执行类似于play1.x的操作。中心点是
上下文
。此外,您必须创建一个
DummyRequest
,它实现您需要的方法。然后可以创建以下内容

final Request request = new DummyRequest();
Context.current.set(new Context(request, new HashMap <String, String>(), 
        new HashMap <String, String>()));
final Request=new DummyRequest();
Context.current.set(新的上下文(请求,新的HashMap(),
新的HashMap());
在测试中,您可以获得
Context.current().session()
Context.current().response()
Context.current().request()


你可以在这里看到一个。

如果我调用它,我会用
Context.current().request()得到它吗?必须有URL的路由吗?我的意思是,只有伪造的请求才是毫无价值的,因为它不是请求的实例:-(是的,每个URL都必须有一个路由。在一个操作中,您可以使用控制器的方法检索当前会话。很抱歉,我尝试测试一个模块,因此我没有路由。对于测试,这是不需要的。此外,如果不必仅为测试创建控制器,我将不胜感激。我尝试了FakereRequest,然后是Context.current().request(),但得到一个RuntimeException。所以我仍然不明白FakerRequest做什么。实际上,如果您使用
routeAndCall
帮助程序,您只需要有一个路由。但是您也可以直接使用
callAction
来避免路由定义。与其实现整个虚拟请求,使用模拟l可能更容易对于
Context.current.set()
answer,library.+1。是的,模拟库将是更干净的方法。上次在依赖项方面遇到了一些问题,所以我在整个测试中选择手动编写模拟。