繁体   English   中英

如何在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM