Issue
I use org.springframework.security.core.Authentication
which has a method:
Collection<? extends GrantedAuthority> getAuthorities();
when(authentication.getAuthorities()).thenReturn(grantedAuthorities);
with authorities collection:
Collection<SimpleGrantedAuthority> grantedAuthorities = Lists.newArrayList(
new SimpleGrantedAuthority(AuthoritiesConstants.USER));
And I am using org.springframework.security.core.authority.SimpleGrantedAuthority
which extends GrantedAuthority
And Intellij gives me below compile error:
Cannot resolve method 'thenReturn(java.util.Collection<org.spring.security.core.authority.SimpleGrantedAuthority>)'
I use Mockito 2.15.0
and thenReturn()
method from it is:
OngoingStubbing<T> thenReturn(T value);
What is the problem?
Solution
Try using the other syntax to return your collection with a wildcard matching generic:
doReturn(grantedAuthorities).when(authentication).getAuthorities();
This doReturn
call isn't type-safe and results in a runtime check on type but for your purposes it will return the mocked list you want.
There are a lot of details using mockito and generics with wildcards. For more details: http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeArguments.html#Wildcards
Answered By - Joe W
Answer Checked By - Gilberto Lyons (JavaFixing Admin)