web-dev-qa-db-ja.com

mockitoで「メソッドを解決できません」

私はメソッドを持つ_org.springframework.security.core.Authentication_を使用します:

_Collection<? extends GrantedAuthority> getAuthorities();
_

以下のようにモックしたい:

_when(authentication.getAuthorities()).thenReturn(grantedAuthorities);
_

権限のあるコレクション:

_Collection<SimpleGrantedAuthority> grantedAuthorities = Lists.newArrayList(
        new SimpleGrantedAuthority(AuthoritiesConstants.USER));
_

そして、GrantedAuthorityを拡張する_org.springframework.security.core.authority.SimpleGrantedAuthority_を使用しています

そしてIntellijは私にコンパイルエラーを下に与えます:

_Cannot resolve method 'thenReturn(Java.util.Collection<org.spring.security.core.authority.SimpleGrantedAuthority>)'
_

私はMockito _2.15.0_とthenReturn()メソッドを使用しています:

_OngoingStubbing<T> thenReturn(T value);
_

何が問題ですか?

8

他の構文を使用して、ワイルドカードに一致するジェネリックでコレクションを返すようにしてください:doReturn(grantedAuthorities).when(authentication).getAuthorities();

このdoReturn呼び出しはタイプセーフではなく、型の実行時チェックが行われますが、目的のために、必要なモックリストが返されます。

ワイルドカードを使用したmockitoとジェネリックの使用に関する詳細はたくさんあります。詳細: http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeArguments.html#Wildcards

3
Joe W