Mockito: Vérification avec des parameters génériques

Avec Mockito je peux faire ce qui suit:

verify(someService).process(any(Person.class)); 

Mais comment puis-je écrire ceci si le process prend plutôt une Collection place? Impossible de comprendre comment l’écrire correctement. Juste obtenir des erreurs de syntaxe …

    Essayer:

     verify(someService).process(Matchers.>any()); 

    En fait, IntelliJ a automatiquement suggéré ce correctif lorsque j’ai tapé any() … Malheureusement, vous ne pouvez pas utiliser l’importation statique dans ce cas.

    Essayez:

     verify(someService).process(anyCollectionOf(Person.class)); 

    Depuis la version 1.8, Mockito introduit

     public static  Collection anyCollectionOf(Class clazz); 

    Si vous utilisez une méthode propre, vous pouvez même utiliser l’importation statique:

     private Collection anyPersonCollection() { return any(); } 

    Ensuite, vous pouvez utiliser

     verify(someService).process(anyPersonCollection()); 

    Vous ne pouvez pas exprimer cela à cause d’un effacement de type. Même si vous pouviez l’exprimer en code, Mockito n’avait aucune chance de le vérifier à l’exécution. Vous pourriez créer une interface comme

     interface PersonCollection extends Collection { /* nothing */ } 

    à la place et utilisez-le tout au long de votre code.

    Edit: Je me suis trompé, Mockito a anyCollectionOf (..) qui est ce que vous voulez.