问题标签 [mockwebserver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1571 浏览

java - Mono.flatMap 在使用 MockWebServer 模拟响应时不起作用

使用 WebClient 进行 HTTP 调用,从 Mono 输出我想做一些逻辑,为此我使用 flatMap 方法。

使用 OkHttp MockWebServer 库来模拟响应并对功能进行单元测试。该flatMap方法在使用 MockWebServer 时没有被调用,但是,在实际调用中一切正常。

以下是用于模拟 HTTP 响应的片段

我认为这种行为的原因是由于 MockWebServer 在内部创建模拟的方式。我在这里想念什么?

0 投票
1 回答
6398 浏览

java - MockwebServer 不模拟 http 调用

我最近发现了 MockWebServer 库,并尝试在我的项目中与 Junit 和 mockito 一起使用它。

我有这个测试方法:

我的方法 getUsers() 进行 Http 调用:

这是我的 gradle 配置:

当我启动单元测试时,Mockwebserver 不会模拟 http 调用。我从我的真实服务器得到响应,而不是模拟响应(“{}”)。

你能帮我吗?提前致谢

0 投票
1 回答
8051 浏览

android - 如何使 android:usesCleartextTraffic="true" 仅用于仪器测试?

我正在使用RESTMock进行仪器测试,但它只有在我的清单中设置usesCleartextTraffic为时才有效。true不过,我只希望这对于仪器测试是正确的。有没有办法做到这一点?

我尝试在文件夹中创建一个新的清单文件androidTest。测试运行但它们usesCleartextTraffic仍然失败false

我知道RESTMock 从0.3.2 版本开始支持https,但我宁愿不必处理它。我实际上遵循了他们的指南,并从 OkHttp3 中得到了这个错误:

java.lang.AssertionError: java.security.NoSuchAlgorithmException: The BC provider no longer provides an implementation for KeyPairGenerator.RSA. Please see https://android-developers.googleblog.com/2018/03/cryptography-changes-in-android-p.html for more details.

有任何想法吗?


编辑:

我遵循了这个答案并将我创建的这个清单移到了debug源文件夹,然后它就可以工作了。现在该android:usesCleartextTraffic="true"选项仅适用于我的调试版本,由仪器测试使用,因此它可以工作,但它仍然不是正确的解决方案。

0 投票
1 回答
5230 浏览

android-espresso - 连续调用 MockWebServer 进行测试

我正在为一个对服务器进行多次连续调用的 Activity 编写测试。我的 MockWebServer 混合了响应序列。例如,当我发出两个连续的请求 request1 和 request2 时,它有时会返回 request2 的 Json 响应 request1 和 request1 的 Json 响应 request2。如何指定 MockWebServer 必须返回到指定请求的响应?

在文档中说“排队脚本响应将返回到按顺序发出的请求。第一个请求由第一个排队响应提供服务;第二个请求由第二个排队响应提供;依此类推。”

此序列在并行请求的情况下不起作用。

0 投票
1 回答
373 浏览

android - MockWebServer - 值计数不同;预期:1,实际:0

日志错误:

2019 年 2 月 7 日上午 10:52:49 okhttp3.mockwebserver.MockWebServer$2 执行

信息:MockWebServer[54845] 开始接受连接

[size=9333 text=[\n {\n "userId": 1,\n "id": 1,\n "title": "quidem molesti…] 2019 年 2 月 7 日上午 10:52:49 okhttp3.mockwebserver .MockWebServer$3 processOneRequest

信息:MockWebServer[54845] 收到请求:GET /albums?userId= HTTP/1.1 并响应:HTTP/1.1 200 OK

2019 年 2 月 7 日上午 10:52:51 okhttp3.mockwebserver.MockWebServer$2 acceptConnections 信息:MockWebServer[54845] 完成接受连接:套接字已关闭

java.lang.AssertionError:值计数不同;预期:1,实际:0(闩锁 = 1,值 = 0,错误 = 0,完成 = 0,超时!)

在 io.reactivex.observers.BaseTestConsumer.fail(BaseTestConsumer.java:189) 在 io.reactivex.observers.BaseTestConsumer.assertValueCount(BaseTestConsumer.java:515) 在 ir.hosseinabbasi.tdd.dao.TestAlbumDaoViaMockWebService.get 专辑列表模拟服务器(TestAlbumDaoViaMockWebService.kt:58)

系统打印输出:

测试类:

专辑.json:

getJson 方法:

我的 App 模块中的 BuildConfig:

在我的 App 模块中构建改造:

MockWebServer 版本: 3.12.1

如果我评论这一行,则测试通过: testObserver.assertValueCount(1)

0 投票
1 回答
1271 浏览

android - 无法使用 mockwebserver 开始 Espresso 测试:无法解析 com.squareup.okhttp3:okhttp

安卓工作室 3.3

在 build.gradle 中:

在我的 app/build.gradle 中:

这里 Espresso 的测试:

但我得到错误:

0 投票
1 回答
973 浏览

java - 使用 MockWebServer 返回 gzip 响应

我在为使用 OkHttp 的客户端编写涉及压缩响应的测试时遇到问题。本质上我正在做的是:

但是,当我运行此测试时,它会在调用时爆炸response.body().string()

我压缩响应体的方式有问题吗?我需要做更多的工作来设置 MockWebServer 吗?

0 投票
1 回答
444 浏览

android - 长时间运行时如何开始检查(从网络加载数据)

安卓工作室 3.3。

在我的应用程序中,我使用 Retrofit 来执行 http 请求。我也使用 MockWebServer 返回存根响应。

在我单击按钮时的活动中,我启动异步http 请求(通过改造)并等待回调方法返回响应。这里 Espresso 的测试:

但问题是当执行perform(click()该方法时,check直到没有得到存根响应(5 秒后)才调用该方法。

但是我需要在方法之后check 立即perform(click()调用方法。因为我需要的是check同时不返回存根响应。我需要在加载数据期间检查我的视图containerProgressBarLayoutisDisplayed()

我怎么能做到这一点?

0 投票
0 回答
164 浏览

spring - 如何使用 okhttp MockWebServer 模拟 Mockito 之类的 bean

我正在尝试使用 OkHttp MockWebServer 来模拟我使用的几个 API 调用。目前我使用 Mockito。我试图找出我是否可以使用 MockWebServer 作为它更易于使用的方式。我有一个用 Mockito 创建的模拟 bean,如下所示:

然后我使用 Mockito 的 when() 来跟踪模拟 bean 中的方法调用并返回响应。

有没有办法可以使用 OkHttp MockWebServer 复制类似的功能?

提前致谢

0 投票
0 回答
238 浏览

android - Mockwebserver 和 OkHttpIdlingResrouce 连接异常

我正在使用 Square 的 MockWebServer 编写仪器测试来模拟服务器响应,并使用 OkHttpIdlingResource 来等待 OkHttp 完成工作,直到剩余的测试步骤继续。我还使用了 MockWebServer 调度程序,以便我可以根据路径以不同方式响应某些请求。

我遇到了一个问题,即测试适用于某些 Android API 版本,而它们不适用于其他版本。

在 Marshmallow 上,测试按预期通过。当我在 Android Pie 上运行时,MockWebServer 会响应几个请求,但随后,出于某种原因,OkHttp 抛出了 java.net.ConnectException。

如果我点击我的真实网络服务器,任何应用程序版本都可以正常工作,只有在使用 MockWebServer 时我才会看到这个问题。

我不知道是什么导致了这种情况,并且日志没有显示任何有用的信息。在失败的情况下,我可以看到 MockWebServer 有几个成功的 200 响应,但由于某种原因,在其中一个调用期间发生了 ConnectException。

我可以在日志中看到的唯一奇怪的事情是,在记录最后一个失败的 OkHttp 请求之前记录了 Espresso ViewAssertion。所以可能是 OkHttpIdlingResource 说它是空闲的,而实际上它不是。

关于什么可能是错误的任何想法?