Maison >Java >javaDidacticiel >Comment se moquer de méthodes statiques spécifiques renvoyant des objets en Java à l'aide de Mockito et PowerMock ?

Comment se moquer de méthodes statiques spécifiques renvoyant des objets en Java à l'aide de Mockito et PowerMock ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-28 04:24:12476parcourir

How to Mock Specific Static Methods Returning Objects in Java Using Mockito and 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()) se moquera de toutes les méthodes , y compris m2, qui a un type de retour différent. De même, PowerMockito.when(Static.m1(param1, param2)).thenReturn(1000l) ne sera pas appelé car la méthode statique n'a pas été simulée correctement.

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())) vous permet de fournir une stratégie par défaut pour les méthodes simulées.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn