gpt4 book ai didi

playframework - Play Framework 功能测试中的 PUT 方法

转载 作者:行者123 更新时间:2023-12-02 00:32:53 25 4
gpt4 key购买 nike

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

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

看起来在使用 PUT 方法时 session 丢失了

有人遇到过类似的问题吗?

我正在使用 play 1.1.1

最佳答案

看起来 FunctionalTest 中有错误。在所有方法(POST、GET、DELETE)中,都有以下行传递 cookie

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

PUT 中缺少此行。此外,由于 savedCookies 是私有(private)的,您无法在测试中访问它。

解决方法是将测试中的 cookies 映射定义为私有(private)变量,将其设置为登录响应 cookies,然后使用此 cookies 调用 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);

关于playframework - Play Framework 功能测试中的 PUT 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5965193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com