无法使用robolectric捕获HTTP请求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法使用robolectric捕获HTTP请求相关的知识,希望对你有一定的参考价值。

我试图用Robolectric捕获一个http请求方法tokenize方法向服务器发送一个请求,我只想测试发送的帖子:如果我尝试

//Cardtest.java

Robolectric.setDefaultHttpResponse(200, "dummy");
card.tokenize(paymentHandler);
Robolectric.getSentHttpRequest(0);

我有一个空数组错误

但我知道请求已发送,因为如果我删除第一行,则会出现以下错误:

Unexpected HTTP call POST

如果我把log语句看起来似乎永远不会为http请求调用我的成功块。

如何确保调用我的HTTP请求成功回调。

(我已经尝试过Robolectric.runUiThreadTasksIncludingDelayedTasks();)

谢谢

答案

我们在评论中讨论过。问题是因为Robolectric被配置为不拦截http请求:

Robolectric.getFakeHttpLayer().interceptHttpRequests(false)
另一答案

高于3.0和更高版本,您可以使用

 FakeHttp.getFakeHttpLayer().interceptHttpRequests(false);

以上是关于无法使用robolectric捕获HTTP请求的主要内容,如果未能解决你的问题,请参考以下文章

为啥 charles 无法通过 c++ 捕获 http 请求?

BizTalk 捕获 Http 响应代码

使用 Robolectric ClassCastException 进行 Android 测试:android.app.Application 无法转换为 MyApplication

Robolectric使用教程

Robolectric使用教程

如何正确捕获和处理对 Facebook api 的 Http 获取请求中的错误