Lorsqu'il s'agit d'une classe contenant plusieurs méthodes statiques, le défi se pose de se moquer d'une seule méthode statique tout en s'assurant qu'elle renvoie un objet. Voici une solution détaillée utilisant PowerMockito :
Activer la simulation statique :
Commencez par activer la simulation statique pour la classe que vous souhaitez modifier à l'aide de PowerMockito. mockStatic (Classe.classe). Cela vous permet de configurer des comportements spécifiques pour les méthodes statiques au sein de cette classe.
Stubbing de la méthode :
Pour spécifier le comportement de la cible méthode statique, utilisez la syntaxe when-thenReturn. Par exemple :
when(Class.m1(param1, param2)).thenReturn(objectToReturn);
Ceci spécifie que lorsque m1 est appelé avec les paramètres donnés, il doit renvoyer l'objet fourni.
Éviter les valeurs de retour par défaut :
Par défaut, PowerMockito fournit ses propres valeurs par défaut pour les méthodes statiques non stubbées. Pour remplacer cela et renvoyer un objet personnalisé, il est crucial d'utiliser la version à 1 argument de mockStatic sans spécifier de stratégie par défaut.
Exemple d'implémentation :
Considérez l'extrait de code suivant :
PowerMockito.mockStatic(Static.class); when(Static.m1("param1", "param2")).thenReturn(new Object());
Ce code se moque de la méthode statique m1 dans la classe Static et la stubs pour renvoyer une nouvelle instance d'un objet.
Utilisation de la méthode simulée :
Une fois que la méthode statique est simulée et stubbé, vous pouvez l'utiliser comme d'habitude. L'appel de méthode sera intercepté par PowerMockito et renverra l'objet spécifié.
N'oubliez pas que la principale différence ici réside dans l'utilisation de la version à 1 argument de mockStatic pour activer la simulation statique sans spécifier de stratégie par défaut. , puis en utilisant la syntaxe when-thenReturn pour remplacer une seule méthode statique afin de renvoyer un objet.
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!