Maquette méthode privée à l'aide de PowerMockito
Je suis en utilisant PowerMockito de se moquer de l'privée de l'appel de méthode (privateApi), mais il fait encore le privateApi d'appel qui, à son tour, fait un autre thirdPartCall. Je suis aller au problème lorsque thirdPartyCall throws exception. Comme je le comprends, si je suis en se moquant de la privateApi, il ne devrait pas entrer dans la méthode de la mise en œuvre du détail et de retour de la simulation de la réponse.
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
}
}
Ici, c'est le cas de test:
@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();
}
}
Console de trace:
In privateAPI
In thirdPartyCall
In publicApi
result : 20
OriginalL'auteur Pankaj | 2015-01-24
Vous devez vous connecter pour publier un commentaire.
Vous avez juste besoin de changer la maquette de l'appel de méthode à utiliser
doReturn
.Exemple Partielle se moquant de la Méthode Privée
Code de Test
Console trace
comment annuler les méthodes privées ?
pouvez-vous veuillez donner un peu de code pour les nuls avec des méthodes privées à l'aide de powerMockito? @cID
Pourriez-vous svp m'aider à résoudre stackoverflow.com/questions/52052648/... ?
Pourquoi attendons-nous à avoir RunTimeException ici ? Si nous ne voulons pas aller de l'avant, sans exception, alors que devons-nous changer?
OriginalL'auteur clD