如何使用mockito调用枚举类型中的私有方法

问题描述 投票:-1回答:1
public enum SPHttpClient {
    ;

private static fun(clientInstance) {
    HttpPost postRequest;
    /* some processing*/
    clientInstance.execute(postRequest);
    // I need to mock this execute statement
 }

}

在私人方法乐趣上写Junit测试,

如何调用ENUM类型的私有方法,我还需要模拟通过私有方法的参数传递的clientInstance?

SPHttpClient spHttpClient;
final Method method = spHttpClient.getClass().getDeclaredMethod("fun", HttpClient.class);
        method.setAccessible(true);
        Object actual = method.invoke(spHttpClient, mockHttpClient);

我认为getclass不会用于枚举?

junit enums mockito
1个回答
0
投票

调用的签名是invoke(Object obj, Object... args)obj必须是this-Object。由于你的方法是静态的,没有这个对象,你可以传递null,但你不能省略它,即下面的工作:

final Method method = SpHttpClient.class.getDeclaredMethod("fun", HttpClient.class);
method.setAccessible(true);
Object actual = method.invoke(null, mockHttpClient);
© www.soinside.com 2019 - 2024. All rights reserved.