我正试图模拟我的测试类中的私有方法,代码如下。
public String processPayment(...) {
//some lines
privateMethod(...);
return "";
}
private Object privateMethod(...) {
//some lines
return someObject;
}
现在,我需要测试
processPayment
方法并模拟privateMethod
。我尝试创建上述类的spy,但是当我执行以下操作时,该方法被调用了。
final DeviceCheckoutServiceImpl spyDeviceCheckoutService = spy(injectedMockBeanOfAboveClass); //@InjectMock in test class
PowerMockito.doReturn(null).when(spyDeviceCheckoutService, "privateMethod", ArgumentMatchers.anyMap()); //method gets called here
spyDeviceCheckoutService.processPayment(...); //private method isn't mocked somehow, and gets called here too
privateMethod
在第二行就被调用了。而且 privateMethod
没有被模拟。
也许我创建 spy 对象的方式不正确?不能像这样做 spy(new DeviceCheckoutServiceImpl());
,因为它需要 bean 实例化。
Powermockito 版本:
compile group: 'org.powermock', name: 'powermock-module-junit4', version: '2.0.0'
compile group: 'org.powermock', name: 'powermock-api-mockito2', version: '2.0.0'
请告诉我在这里做错了什么。
PowerMockito.doReturn("Test").when(spy, METHOD);
时,该方法都会被调用,但是该方法并没有被模拟。 :-/ - Praveen Kamath