Maison >Java >javaDidacticiel >Comment se moquer de méthodes statiques spécifiques renvoyant des objets en Java à l'aide de Mockito et PowerMock ?
Méthodes statiques spécifiques de moquerie pour renvoyer des objets
Mockito et PowerMock fournissent une prise en charge robuste pour les méthodes statiques moqueuses. Cependant, il peut être difficile de se moquer d'une seule méthode statique et de lui faire renvoyer un objet.
Évitez les disparités et les problèmes d'appel
Lorsque vous vous moquez d'une méthode statique qui renvoie un objet, il est important d’éviter les incohérences dans les types de retour. Se moquer de toutes les méthodes statiques avec une stratégie par défaut (comme renvoyer null pour les méthodes à valeur objet) peut entraîner des erreurs.
PowerMockito.mockStatic(Static.class, new Answer
Activer la simulation statique et la méthode spécifique à la cible
La solution consiste à combiner les concepts de simulation de méthode statique et de stubbing de méthode ciblée. PowerMockito.mockStatic permet la simulation statique d'une classe, tandis que la syntaxe when-thenReturn vous permet de stub des méthodes spécifiques.
PowerMockito.mockStatic(Static.class);
when(Static.m1(param1, param2) ).thenReturn(1000l);
Cette approche permet une simulation statique pour toutes les méthodes de Static.class mais ne remplace pas la stratégie de stubbing par défaut. En utilisant when-thenReturn, vous supprimez explicitement la méthode m1 pour renvoyer 1000l.
Considérez les surcharges MockStatic
PowerMockito fournit deux surcharges pour mockStatic. La surcharge à un argument (mockStatic(Static.class)) permet une simulation statique sans stratégie par défaut. La surcharge à deux arguments (mockStatic(Static.class, Answer
En fonction de votre scénario de test spécifique, vous pouvez choisir d'utiliser soit de ces surcharges. Si vous souhaitez vous moquer uniquement d'une méthode spécifique ou définir plusieurs valeurs de retour pour différents appels de méthode, la surcharge à un argument est plus appropriée.
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!