Comment se moquer d'Une Interface Java PowerMockito
Je m en essayant de se moquer d'une interface.
public interface FlowCopyParamsBusinessManager {
List<FlowCopyParams> findByAppli(String application, String sourcePattern)
throws FlowCopyParamsBusinessException;
}
Dans mon code, quand j'appelle cette méthode findByAppli, je voudrais revenir une liste de FlowCopyParams.
List<FlowCopyParams> lstFlowCopyParams = flowCopyParamsBusinessManager.findByAppli(
"TOTO","TATA);
Ici, j'essaie dans la classe de test:
@BeforeClass
public static void mockBeanIn() throws Exception {
List<FlowCopyParams> flowCopyParamsList = new ArrayList<>();
PowerMockito.spy(FlowCopyParamsBusinessManager.class);
PowerMockito.when(FlowCopyParamsBusinessManager.class, "findByAppli", Mockito.anyString(), Mockito.anyString()).thenReturn(flowCopyParamsList);
}
J'ai cette erreur :
java.lang.IllegalArgumentException: object is not an instance of declaring class
Je ne sais pas pourquoi, parce que la méthode findByAppli doit ont deux paramètres de la chaîne de, et j'ai mis Mockito.anyString() et j'ai encore IllegalArgumentException.
La moindre idée ?
Thxs.
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin d'utiliser PowerMockito, et comme une Interface, theres aucun besoin de spy() tant que vous ne vous basez pas sur tout non moqué de la logique.
Il peut être fait comme ça, dans votre classe de test définir une variable de classe.
Dans un
@Before
méthode annotée:Puis reportez-vous à
flowCopyParamsBusinessManagerMock
dans vos tests.Mon test n'a pas fonctionné car j'étais en train d'espionner la classe, et non pas sur l'instance de FlowCopyParamsBusinessManager.class .
Tout d'abord , nous devons créer la maquette :
Puis , espion de l'instance :
Il fonctionne aussi bien !
Mockito cannot mock this class: class org.springframework.security.core.Authentication$$EnhancerByMockitoWithCGLIB$$95622b34 Mockito can only mock visible & non-final classes.
Je l'ai fait mettre cette annotation @RunWith(PowerMockRunner.class), à la tête de la classe. ensuite, l'Objet fantaisie avec PowerMockito.maquette(MyMock.class); de Cette manière, l'utilisation peut se moquer d'une interface ou une classe finale.