我使用GAE和playframework写了一个小应用程序。
我正在尝试测试PUT方法(用于更新)和调用时 从FunctionalTest开始,它总是返回登录页面 虽然我在测试开始时登录,但可以通过确认 所有其他方法都正常工作。
看起来使用PUT方法会话丢失
有人有类似的问题吗?
我正在使用play 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);