“无法解析方法”与 mockito
Posted
技术标签:
【中文标题】“无法解析方法”与 mockito【英文标题】:"Cannot resolve method" with mockito 【发布时间】:2018-12-12 14:03:21 【问题描述】:我使用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);
有什么问题?
【问题讨论】:
【参考方案1】:尝试使用其他语法返回带有通配符匹配泛型的集合:
doReturn(grantedAuthorities).when(authentication).getAuthorities();
这个doReturn
调用不是类型安全的,会导致对类型进行运行时检查,但出于您的目的,它会返回您想要的模拟列表。
使用带有通配符的 mockito 和泛型有很多细节。更多细节: http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeArguments.html#Wildcards
【讨论】:
可爱的把戏!它还解决了我测试中的其他几个错误!谢谢!以上是关于“无法解析方法”与 mockito的主要内容,如果未能解决你的问题,请参考以下文章
无法解析方法'setWebChromeClient(匿名android
无法解析方法 getLocationSettingsStates()