【问题标题】:"Cannot resolve method" with mockito“无法解析方法”与 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.0thenReturn() 方法是:

OngoingStubbing<T> thenReturn(T value);

有什么问题?

【问题讨论】:

    标签: spring junit spring-security mockito


    【解决方案1】:

    尝试使用其他语法返回带有通配符匹配泛型的集合: doReturn(grantedAuthorities).when(authentication).getAuthorities();

    这个doReturn 调用不是类型安全的,会导致对类型进行运行时检查,但出于您的目的,它会返回您想要的模拟列表。

    使用带有通配符的 mockito 和泛型有很多细节。更多细节: http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeArguments.html#Wildcards

    【讨论】:

    • 可爱的把戏!它还解决了我测试中的其他几个错误!谢谢!
    猜你喜欢
    • 2021-02-23
    • 2021-10-14
    • 2022-08-02
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    • 2015-06-10
    相关资源
    最近更新 更多