web-dev-qa-db-fra.com

"Impossible de résoudre la méthode" avec mockito

J'utilise org.springframework.security.core.Authentication Qui a une méthode:

Collection<? extends GrantedAuthority> getAuthorities();

Je veux me moquer comme ci-dessous:

when(authentication.getAuthorities()).thenReturn(grantedAuthorities);

avec la collecte des autorités:

Collection<SimpleGrantedAuthority> grantedAuthorities = Lists.newArrayList(
        new SimpleGrantedAuthority(AuthoritiesConstants.USER));

Et j'utilise org.springframework.security.core.authority.SimpleGrantedAuthority Qui étend GrantedAuthority

Et Intellij me donne ci-dessous une erreur de compilation:

Cannot resolve method 'thenReturn(Java.util.Collection<org.spring.security.core.authority.SimpleGrantedAuthority>)'

J'utilise la méthode Mockito 2.15.0 Et thenReturn(), c'est:

OngoingStubbing<T> thenReturn(T value);

Quel est le problème?

8
Krzysztof Majewski

Essayez d'utiliser l'autre syntaxe pour renvoyer votre collection avec un générique correspondant au générique: doReturn(grantedAuthorities).when(authentication).getAuthorities();

Cet appel doReturn n'est pas sûr pour le type et entraîne une vérification de l'exécution sur le type mais pour vos besoins, il renverra la liste simulée que vous souhaitez.

Il y a beaucoup de détails à l'aide de mockito et de génériques avec des caractères génériques. Pour plus de détails: http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeArguments.html#Wildcards

3
Joe W