Я пытаюсь смоделировать закрытый метод в тестируемом классе, как показано ниже.
public String processPayment(...) {
//some lines
privateMethod(...);
return "";
}
private Object privateMethod(...) {
//some lines
return someObject;
}
Теперь мне нужно протестировать processPayment
метод и макет privateMethod
.
Я пытался создать шпиона вышеупомянутого класса, но метод вызывается, когда я делаю ниже
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
вызывается на самой 2-й строке.Кроме того, the privateMethod
не является предметом насмешек.
Может быть, я неправильно создаю объект-шпион?Невозможно выполнить spy(new DeviceCheckoutServiceImpl());
, так как для этого требуется создание экземпляра компонента.
Версия 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'
Дайте мне знать, что я делаю здесь неправильно.