![](/img/trans.png)
[英]Can I mock a superclass's constructor with Mockito/Powermock?
[英]How can I disable constructor execution in Mockito/PowerMock?
我需要为MyClass
类编写测试。
public class MyClass {
public Result<Data> get() {
return Request
.buildRequest(session, Data.class, new DefaultErrorHandler())
.executeAndConvert();
}
}
我的要求班
public class Request<Type> implements RequestBuilder<Type> {
public static <T> Request<T> buildRequest(String session, Class<T> responseClass) {
return buildRequest(session, responseClass, null);
}
public static <T> Request<T> buildRequest(String session, Class<T> responseClass, ErrorHandler errorHandler) {
Request<T> request = new Request<T>(session, responseClass);
// some logic
return request;
}
@Override
public Result<Type> executeAndConvert() {
Invocation.Builder req = buildRequest();
return executeRequest(req);
}
// some other code
}
这是我的测试代码
PowerMockito.mockStatic(Request.class);
PowerMockito.when(Request.buildRequest(sessionMock, Data.class)).thenReturn(requestMock);
myClass.get(); // which is return a Request object
我想禁用Request构造函数调用,因为在内部触发时会得到NPE。 实际上,我不需要在构造函数内部或方法链中调用所有方法。 我只需要返回一个模拟结果。
PowerMockito.when(Request.buildRequest(sessionMock, Data.class)).thenReturn(requestMock);
与您拨打的电话不匹配:
Request.buildRequest(session, Data.class, new DefaultErrorHandler())
您还应该为ErrorHandler添加一个匹配器。 如您所说,如果未设置任何内容,则返回null
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.