如何在私有 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
)。
我正在为 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
)。