PUT方法在play框架中的功能测试

时间:2011-05-11 13:38:12

标签: playframework

我使用GAE和playframework写了一个小应用程序。

我正在尝试测试PUT方法(用于更新)和调用时 从FunctionalTest开始,它总是返回登录页面 虽然我在测试开始时登录,但可以通过确认 所有其他方法都正常工作。

看起来使用PUT方法会话丢失

有人有类似的问题吗?

我正在使用play 1.1.1

1 个答案:

答案 0 :(得分:3)

看起来FunctionalTest中存在一个错误。 在所有方法(POST,GET,DELETE)中,都有以下行继承cookie

if (savedCookies != null) request.cookies = savedCookies;

PUT中缺少此行。另外因为savedCookies是私有的,你无法在测试中访问它。

解决方法是将测试中的cookie映射定义为私有变量,将其设置为登录响应cookie,然后使用此cookie使用新请求调用POST。

这是我的代码

private static Map<String, Http.Cookie> lastCookies;

public void login(){
    String postUrl = Router.reverse("GAEActions.doLogin").url;
    Map<String, String> map = Maps.newHashMap();
    map.put("email", "as@gmail.com");
    map.put("url", "/");
    map.put("isAdmin", "true");
    Map<String, File> fileMap = Maps.newHashMap();
    Response post = POST(postUrl, map, fileMap);
    lastCookies = post.cookies;
}
public void test(){
....
    Request request = newRequest();
    request.cookies = lastCookies;
    Response post = PUT(request, url,"application/json",json);