Maison >Java >javaDidacticiel >Comment se moquer d'une méthode statique unique et renvoyer un objet personnalisé à l'aide de PowerMock ?
Lorsque vous vous moquez de méthodes statiques en Java, vous pouvez rencontrer le besoin de stub sélectivement une méthode spécifique et de renvoyer un objet personnalisé. PowerMock fournit les fonctionnalités nécessaires pour y parvenir.
Pour se moquer des méthodes statiques, vous devez d'abord activer la simulation statique pour la classe cible à l'aide de PowerMockito.mockStatic(). Cependant, la stratégie de réponse par défaut attribuée à cette méthode peut entraîner des erreurs d'incompatibilité de type si la classe contient plusieurs méthodes statiques avec différents types de retour.
Au lieu de cela, vous devez utiliser celle -surcharge d'arguments de mockStatic() pour activer la simulation statique, puis utilisez PowerMockito.when() et thenReturn() pour spécifier le comportement souhaité pour la méthode individuelle. Cela vous permet de définir des valeurs de retour personnalisées pour chaque méthode stubbée.
Considérez une classe avec deux méthodes statiques, l'une renvoyant une chaîne et l'autre un int :
class ClassWithStatics { public static String getString() { return "String"; } public static int getInt() { return 1; } }
Pour remplacer la méthode getString() pour renvoyer "Bonjour !", vous feriez la suivant :
PowerMockito.mockStatic(ClassWithStatics.class); when(ClassWithStatics.getString()).thenReturn("Hello!"); System.out.println("String: " + ClassWithStatics.getString());
Notez que la méthode getInt() n'est pas explicitement supprimée. Il utilisera le comportement par défaut consistant à renvoyer 0.
En utilisant la combinaison correcte de techniques de simulation statique et de stubbing, vous pouvez vous moquer de manière sélective d'une seule méthode statique et renvoyer un objet dans PowerMock. Cela vous permet de tester et d'isoler le comportement spécifique d'une méthode statique dans votre code Java.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!