首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何模拟对外部URL的OkHttpClient请求?

如何模拟对外部URL的OkHttpClient请求?
EN

Stack Overflow用户
提问于 2020-05-22 01:30:13
回答 1查看 615关注 0票数 2

我的服务中有这样的代码:

代码语言:javascript
复制
public String requestValue() {
  Call call = okHttpClient.newCall(new Request.Builder().url("external-url").build());
  Response response = call.execute();
  return response.body().string();
}

如何在Junit测试中模拟此调用的结果?

代码语言:javascript
复制
public void testRequestValue() {
  // TODO mock http response
  String result = myService.requestValue();
  assertEquals("value", result);
}

注意:使用Mockito的朴素解决方案不起作用。Mockito.eq不会在Request对象上触发(似乎Request.equals为相同的请求提供了错误的结果)。

代码语言:javascript
复制
Request request = new Request.Builder().url("external-url").build();
Response response = new Response.Builder()
  .request(request)
  .protocol(Protocol.HTTP_2)
  .code(200)
  .message("")
  .body(ResponseBody.create("value", MediaType.get("application/json")))
  .build();

Call call = Mockito.mock(Call.class);
Mockito.when(call.execute()).thenReturn(response);
Mockito.when(okHttpClientMock.newCall(Mockito.eq(request))).thenReturn(call);
EN

回答 1

Stack Overflow用户

发布于 2020-05-25 16:57:03

您可以使用wiremockokhttp提供的MockServer

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61940324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档