Я использую org.springframework.security.core.Authentication, у которого есть метод:
Collection<? extends GrantedAuthority> getAuthorities();
Я хочу издеваться над этим, как показано ниже:
when(authentication.getAuthorities()).thenReturn(grantedAuthorities);
со сборником властей:
Collection<SimpleGrantedAuthority> grantedAuthorities = Lists.newArrayList(
new SimpleGrantedAuthority(AuthoritiesConstants.USER));
И я использую org.springframework.security.core.authority.SimpleGrantedAuthority, который расширяет GrantedAuthority
И Intellij дает мне ошибку компиляции ниже:
Cannot resolve method 'thenReturn(java.util.Collection<org.spring.security.core.authority.SimpleGrantedAuthority>)'
Я использую Mockito 2.15.0 и метод thenReturn() из него:
OngoingStubbing<T> thenReturn(T value);
В чем проблема?
Попробуйте использовать другой синтаксис, чтобы вернуть свою коллекцию с универсальным шаблоном соответствия:
doReturn(grantedAuthorities).when(authentication).getAuthorities();
Этот вызов doReturn не является типобезопасным и приводит к проверке типа во время выполнения, но для ваших целей он вернет нужный вам фиктивный список.
Есть много деталей с использованием mockito и дженериков с подстановочными знаками. Больше подробностей: http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeArguments.html#Wildcards