在没有 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
模拟 类 的新构造。
@Vitor Cavalcanti 的回答很好,但对于这个特定的用例,我最好使用 OkHttp
提供的 mockwebserver
库
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>mockwebserver</artifactId>
<version>${okhttp.version}</version>
<scope>test</scope>
</dependency>
因为一旦我继续添加测试,我将需要模拟很多与 Web 服务器相关的 类,而这个依赖项为我完成了。
我有发言权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
模拟 类 的新构造。
@Vitor Cavalcanti 的回答很好,但对于这个特定的用例,我最好使用 OkHttp
mockwebserver
库
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>mockwebserver</artifactId>
<version>${okhttp.version}</version>
<scope>test</scope>
</dependency>
因为一旦我继续添加测试,我将需要模拟很多与 Web 服务器相关的 类,而这个依赖项为我完成了。