Я использую PowerMockito для издевательства частного вызова метода (privateApi), но он по-прежнему делает вызов privateApi, который, в свою очередь, делает другой thirdPartCall. Я попадаю в проблему, когда thirdPartyCall выдает исключение. Насколько я понимаю, если я издеваюсь над privateApi, он не должен разбираться в деталях реализации метода и возвращать макет ответа.Мощный частный метод с использованием PowerMockito
public class MyClient {
public void publicApi() {
System.out.println("In publicApi");
int result = 0;
try {
result = privateApi("hello", 1);
} catch (Exception e) {
Assert.fail();
}
System.out.println("result : "+result);
if (result == 20) {
throw new RuntimeException("boom");
}
}
private int privateApi(String whatever, int num) throws Exception {
System.out.println("In privateAPI");
thirdPartyCall();
int resp = 10;
return resp;
}
private void thirdPartyCall() throws Exception{
System.out.println("In thirdPartyCall");
//Actual WS call which may be down while running the test cases
}
}
Вот тестовый пример:
@RunWith(PowerMockRunner.class)
@PrepareForTest(MyClient.class)
public class MyclientTest {
@Test(expected = RuntimeException.class)
public void testPublicAPI() throws Exception {
MyClient classUnderTest = PowerMockito.spy(new MyClient());
PowerMockito.when(classUnderTest, "privateApi", anyString(), anyInt()).thenReturn(20);
classUnderTest.publicApi();
}
}
консоли трассировки:
In privateAPI
In thirdPartyCall
In publicApi
result : 20
Привет спасибо за Ваш ответ вы можете, пожалуйста, взгляните на мой вопрос, который связан с этим : http://stackoverflow.com/questions/35561709/can-not-mock-the-private-method-with-moc kito –
как насчет частных частных методов? –
не могли бы вы дать некоторый код для void с частными методами, используя powerMockito? @cID –