1

我正在使用Robolectric来测试我的 Android 应用程序。我正在尝试编写一个测试来验证我的 Android 应用程序是否正确接收来自 HttpResponse 的 cookie。我尝试了几个选项,但无法让它工作。

这是我在测试中尝试的:

BasicHeader responseHeader = new BasicHeader("Set-Cookie", "cookiename=value");
String responseBody = "OK"
int responseCode = 200;
HttpResponse httpResponse = new TestHttpResponse(responseCode, responseBody, responseHeader);
Robolectric.addPendingHttpResponse(httpResponse);

这就是我的 Android 应用程序代码的样子:

DefaultHttpClient client = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(urlString);
// omitted: add username & password to request as urlencoded parameters
HttpResponse response = client.execute(httpPost);
// ...
List<Cookie> cookies = client.getCookieStore().getCookies();

其他测试运行良好,所以我让 Robolectric 工作。但是 cookie 列表始终是空的,尽管当我将应用程序与(应用程序引擎)后端一起使用时,它工作正常。但是,我可以在测试中从 HttpPost 获取 urlencoded 用户名和密码,因此请求确实得到了处理,只是没有任何 cookie。

有没有人尝试过类似的东西?

4

1 回答 1

0

放置您的 Robolectric.addPendingHttpResponse(httpResponse); 调用android的连接方法之前的行。

它可能工作...

于 2014-02-20T11:21:37.527 回答