«Невозможно разрешить метод» с помощью mockito

Я использую 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);

В чем проблема?

23
0
16 397
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте использовать другой синтаксис, чтобы вернуть свою коллекцию с универсальным шаблоном соответствия: doReturn(grantedAuthorities).when(authentication).getAuthorities();

Этот вызов doReturn не является типобезопасным и приводит к проверке типа во время выполнения, но для ваших целей он вернет нужный вам фиктивный список.

Есть много деталей с использованием mockito и дженериков с подстановочными знаками. Больше подробностей: http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeArguments.html#Wildcards

Другие вопросы по теме