问题标签 [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 回答
1161 浏览

android - 使用 MockWebServer 暂停功能测试

我正在测试使用 MockWebServer 的挂起函数返回结果的 api,但它不适用于 runBlockingTest、testCoroutineDispatcher、testCorounieScope,除非使用了launch构建器,为什么?

结果错误:java.lang.IllegalStateException: This job has not completed yet

如果使用了builder,这个测试不起作用launch,如果使用launchbuilder,它不需要testCoroutineDispatcheror testCoroutineScope,这是什么原因?通常挂起函数通过而不在另一个范围内,即使runBlockingTest

上面的一个有效。

下面的测试也通过了一些时间。

@Test 乐趣Given api return 200, should have list of posts() = testCoroutineScope.runBlockingTest {

我尝试了许多组合调用posts = postApi.getPosts()而不launch使用,使用async,放入enqueueResponse(200)异步 async { enqueueResponse(200) }.await()但测试失败,有时它通过有时它不是每个组合都有一些。

0 投票
3 回答
1652 浏览

android - 使用 JUnit5 assertThrows 和 MockWebServer 测试挂起函数的异常

我们如何使用应该抛出异常的 MockWebServer 测试挂起函数?

postApi.getPosts()无法直接在内部调用 ,assertThrows因为它不是暂停功能,我尝试使用async,launch

org.opentest4j.AssertionFailedError: Expected java.lang.RuntimeException to be thrown, but nothing was thrown.但是对于每个变体,测试都失败了。

0 投票
1 回答
836 浏览

spring-boot - 带有 MockWebServer 的 WebTestClient 挂起

我有一个使用“spring-boot-starter-webflux”公开rest api的spring boot应用程序。当我的端点之一被调用时,我的应用程序会调用其他休息服务。

我正在尝试使用 WebTestClient 来模拟调用我的客户端和 MockWebServer 来模拟我调用的外部休息服务进行集成测试。

我还覆盖了一个 spring 配置以使用一个“指向”我的应用程序中的 MockWebServer 的 web 客户端。

我看到,当我启动测试时,我的服务器启动,并且 MockWebServer 启动,但是当我调用我的端点时,MockWebServer 似乎“卡住”并且没有响应。

此外,测试"java.lang.IllegalStateException: Timeout on blocking read for 5000 MILLISECONDS以 WebTestClient 结束。

0 投票
1 回答
4802 浏览

unit-testing - 如何将 MockWebServer 用于 webclient 的 Junit 测试用例?

我有一个 spring-boot 应用程序,它使用 webclient 调用一些第三方 URL(比如说http://example.com/someUri)(我已经使用 application-dev.properties 在我的应用程序中注入这个 url 以实现松散耦合)并消耗响应并在我的应用程序中使用它.

这是我第一次为 webclient 编写测试用例。我在那里使用了@SprintBootTest。我发现有两种方法可以通过模拟 api 调用并使其调用我的本地 url(将使用 url(http://localhost:{portNumber}/someUri) 来测试我的 webclient 与第三方 Api 调用来自我的测试属性文件:src/test/resources/application.properties),它将提供一些 mockedResponse 作为对我真实客户的回报:

  1. 使用线模
  2. 使用MockWebServer

考虑上面的代码以更好地理解:

应用程序-dev.properties:

src/test/resources/application.properties:

测试类:

但这段代码不起作用。它给了我以上错误:

如果有人知道如何解决此问题以使用模拟 URL 实现我的单元测试,那将非常有帮助?提前致谢!

0 投票
1 回答
279 浏览

android - 如何只测试 MockWebServer 中的 Retrofit 请求参数而不实际执行请求?

我知道可以使用 MockWebServer 测试改造请求和响应,如下所示:

但是,在我的情况下,我只想测试它的请求负载,例如pathheader...而不实际执行time()API(原因是实际 timeData 真的很大)。所以我设置mockWebServer.enqueue(MockResponse())但它不起作用 - 它似乎需要有效的 TimeResponse JSON 数据。

你知道是否可以只测试改造请求有效负载而不实际执行请求?

0 投票
2 回答
625 浏览

android - 如何使用 Hilt 提供测试改造 url

在我的应用程序中,我开始使用 Hilt 作为 DI。所以我创建了一个类来像这样在我的存储库中提供改造

我的问题,如何更改 url 以在带有 Hilt 的 Mockwebserver 中使用它?

0 投票
0 回答
147 浏览

android - MockWebServer Android 测试在 CI 上失败

我已经用 MockWebServer 编写了一个单元测试来捕获Retrofit 抛出的ConnectionException并将它们转换为域级别的错误。

该测试在本地运行良好,但在 Bitrise 上失败!

被测代码是自定义的Retrofit CallAdapter.Factory,在本地调试代码,抛出的错误确实是ConnectionException所以测试通过。在 Bitrise 上运行测试我得到:

这会导致测试失败。

有谁知道我该如何解决这个问题?

0 投票
2 回答
466 浏览

java - java.lang.IllegalArgumentException:日志标记“okhttp3.mockwebserver.MockWebServer”超过 23 个字符的限制

一些要点澄清这不是有人建议的重复问题:


原始问题:

我正在使用Expressoand进行 Android Web 服务测试MockWebServer,但是我遇到以下异常,告诉我日志标记问题:

“okhttp3.mockwebserver.MockWebServer”超过 23 个字符的限制。

详细的堆栈跟踪如下:

0 投票
1 回答
3705 浏览

java - 如何模拟 JUnit 测试的 okhttp 响应

我正在通过 okhttp 向第 3 方 API 发出出站 HTTP 请求:

我想创建一个单元测试并模拟响应。

将模拟响应排入队列后,我需要做什么才能返回模拟响应并将其用于我正在测试的方法的其余部分?

0 投票
2 回答
346 浏览

android - java.lang.NoSuchMethodError: okhttp3.internal.Internal.initializeInstanceForTests 在 Android Studio 4.1

我刚刚升级了 Android Studio 4.1,所有与模拟网络服务器相关的测试在 IDE 中都失败了,但在终端中没有。在我升级到 4.1 之前它通过了。

我的 Okhttp 和 mockwebserver 版本是 4.7.2

测试用例.kt

来自 IDE 的堆栈跟踪