【发布时间】:2019-09-06 11:53:06
【问题描述】:
我正在尝试在我的测试类中模拟一个私有方法,如下所示。
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 在第二行本身被调用。
此外,the privateMethod 不会被嘲笑。
也许我以错误的方式创建了间谍对象?不能做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'
让我知道我在这里做错了什么。
【问题讨论】:
标签: spring-boot junit mockito powermock powermockito