如何在私有 java class 的静态方法中模拟局部变量?

How to mock local variable in a static method of a private java class?

我正在为 class 'Util' 中的静态方法 'updateStatusOfModel' 编写单元测试,其构造函数是私有的。

这个静态方法实例化了一个局部变量dbManager如下:

ActivationDBManager dbManager = new ActivationDBManager();

这个 dbManager 用于调用我必须模拟的方法。

我已经对此进行了如下嘲笑,但不知何故,它不起作用。单元测试没有为 ActivationDBManager 选择模拟对象。

感谢任何帮助。

@Test 
@PrepareForTest(Util.class) 
void updateStatusModel() throws Exception {     
ActivationDBManager mockdbManager = Mockito.mock(ActivationDBManager.class); 
   PowerMockito.whenNew(ActivationDBManager.class).withNoArguments().thenReturn(mockdbManager);    

PowerMockito.doNothing().when(mockdbManager).updateDBStatus(Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString());  

Util.updateStatus("", "", "", "");
}

Util.updateStatus 是一个静态方法。

您应该将 ActivationDBManager 添加到 @PrepareForTest,因为您正在操纵它的字节码(使用 whenNew)。