【问题标题】:How to write Junit Mockito test for Okttp in java如何在 Java 中为 Okttp 编写 Junit Mockito 测试
【发布时间】:2020-10-09 01:13:40
【问题描述】:

我正在尝试为此方法编写 junit mockito 测试。我想弄清楚如何为 post call 编写 junit

public StatusResponse getstatusResponse(){
OkHttpClient client = new OkHttpClient();
        MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
        RequestBody body = RequestBody.create(mediaType, scope);
        Request request = new Request.Builder()
                .url("url")
                .post(body)
                .addHeader("Authorization","4jjf")
                .addHeader("Content-type", "application/json")
                .build();
        Response response = client.newCall(request).execute();
}

【问题讨论】:

  • 你不要调用new OkHttpClient()(一般来说,指导方针是不要在事情的对象上调用new,只有具有值的对象),并且你把它作为你类的构造函数的参数。

标签: java junit mockito okhttp


【解决方案1】:

您应该使用 OkHttp MockWebServer 或类似方法而不是 mockito 来测试这些调用。

https://github.com/square/okhttp/tree/master/mockwebserver

  // Create a MockWebServer. These are lean enough that you can create a new
  // instance for every unit test.
  MockWebServer server = new MockWebServer();

  // Schedule some responses.
  server.enqueue(new MockResponse().setBody("hello, world!"));
  server.enqueue(new MockResponse().setBody("sup, bra?"));
  server.enqueue(new MockResponse().setBody("yo dog"));

  // Start the server.
  server.start();

  // Ask the server for its URL. You'll need this to make HTTP requests.
  HttpUrl baseUrl = server.url("/v1/chat/");

【讨论】:

    猜你喜欢
    • 2019-06-21
    • 2020-02-27
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    相关资源
    最近更新 更多