PowerMock, se moquer d'une méthode statique, PUIS appelez le réel, les méthodes de toutes les autres variables statiques
Je suis la mise en place se moquant de la classe des méthodes statiques. J'ai pour ce faire, dans un @Before
annotée, JUnit méthode de configuration.
Mon objectif est l'installation de la classe pour appeler des méthodes réelles, sauf pour ces méthodes j'ai choisi de se moquer.
En gros:
@Before
public void setupStaticUtil() {
PowerMockito.mockStatic(StaticUtilClass.class);
when(StaticUtilClass.someStaticMethod(anyS
tring())).thenReturn(5); //se moquer de certaines méthodes...
//Now have all OTHER methods call the real implmentation??? How do I do this?
}
Le problème, je suis en cours d'exécution en est que, dans StaticUtilClass
la méthode public static int someStaticMethod(String s)
malheureusement jette un RuntimeException
s'il est fourni avec un null
valeur.
Donc je ne peux pas simplement aller la voie la plus évidente de l'appel de méthodes réelles que les, la réponse par défaut comme ci-dessous:
@Before
public void setupStaticUtil() {
PowerMockito.mockStatic(StaticUtilClass.class, CALLS_REAL_METHODS); //Default to calling real static methods
//The below call to someStaticMethod() will throw a RuntimeException, as the arg is null!
//Even though I don't actually want to call the method, I just want to setup a mock result
when(StaticUtilClass.someStaticMethod(antString())).thenReturn(5);
}
J'ai besoin de définir la valeur par défaut de Répondre à l'appel de méthodes réelles sur toutes les autres méthodes statiques après j'ai simulé les résultats de la méthode, je suis intéressé par les moqueries.
Est-ce possible?
- Le matcher devrait probablement être anyString() plutôt que antString()
- Adams - yep. Mis à jour.
Vous devez vous connecter pour publier un commentaire.
Ce que vous cherchez est appelé partielle moqueur.
Dans PowerMock vous pouvez utiliser mockStaticPartial méthode.
Dans PowerMockito vous pouvez utiliser stubbing, qui stub seulement la définition de la méthode et de laisser les autres inchangés:
également de ne pas oublier le