Comment utiliser Mockito pour se moquer d'une méthode protégée?
Je suis en utilisant Mockito 1.9.5. Comment faire pour se moquer de ce qui est en revenant d'une méthode protégée? J'ai cette méthode protégée ...
protected JSONObject myMethod(final String param1, final String param2)
{
…
}
Cependant, quand j'essaye de le faire dans JUnit:
final MyService mymock = Mockito.mock(MyService.class, Mockito.CALLS_REAL_METHODS);
final String pararm1 = “param1”;
Mockito.doReturn(myData).when(mymock).myMethod(param1, param2);
Sur la dernière ligne, j'obtiens une erreur de compilation “La méthode ‘myMethod " n'est pas visible.” Comment puis-je utiliser Mockito de se moquer protégé méthodes? Je suis ouvert à mise à niveau ma version si c'est la réponse.
source d'informationauteur Dave
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas un problème avec Mockito, mais avec plain old java. D'où vous appelez la méthode, vous n'avez pas de visibilité. C'est pourquoi il est au moment de la compilation question au lieu d'un problème d'exécution.
Quelques options:
De répondre à la demande pour un exemple de code de l'option 3 de John B réponse:
John B est à droite, c'est parce que la méthode que vous êtes en train de tester, est protégé, ce n'est pas un problème avec Mockito.
Une autre option sur le dessus de ceux qu'il a énumérés serait d'utiliser la réflexion pour accéder à la méthode. Cela vous permettra d'éviter la modification de la méthode de test, et d'éviter de changer le modèle que vous utilisez pour écrire des tests, et où vous stockez ces tests. J'ai dû le faire moi-même pour certains essais, où je n'étais pas autorisé à modifier le code de base qui comprenait un grand nombre de méthodes privées qui doivent être l'objet de tests unitaires.
Ces liens expliquer la Réflexion et la façon de l'utiliser très bien, je vais donc le lien vers eux plutôt que de copier: