在没有 PowerMock 的情况下模拟新对象创建 Mockito

Mock new object creation Mockito without PowerMock

我有发言权SomeResolver 我需要测试其方法resolve。该方法正在创建一个 new 对象,我正在尝试 mock。如下所示

public class SomeResolver {
  public String resolve() {
    // need to mock this
    OkHttpClient client = new OkHttpClient().newBuilder().build();
   // so that this
   Response response = client.newCall(someRequest).execute();
   // returns a response I want.
   ...
  }
}

我的测试 Class SomeResolverTest 可以模拟 final 类 并使用 Mockito v3.9.0 但我无法添加Powermock 依赖性

有没有办法模拟 new 返回的值?

您可以添加 mockito-inline 依赖项并使用 MockedConstruction 模拟 类 的新构造。

看看这里: https://javadoc.io/static/org.mockito/mockito-core/3.9.0/org/mockito/Mockito.html#mocked_construction

@Vitor Cavalcanti 的回答很好,但对于这个特定的用例,我最好使用 OkHttp

提供的 mockwebserver
<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>mockwebserver</artifactId>
    <version>${okhttp.version}</version>
    <scope>test</scope>
</dependency>

因为一旦我继续添加测试,我将需要模拟很多与 Web 服务器相关的 类,而这个依赖项为我完成了。