SomeClassThatExtendsSomeClass

SomeClassThatExtendsSomeClass

这是一个真正的新手问题,但我不知道该如何处理。

我必须模拟一个方法来返回这样的Class。

public Class<? extends SomeClass> getAClass();


如果我做这样的事情

when(this.someInstance.getAClass())
    .thenReturn(SomeClassThatExtendsSomeClass.class);


我得到编译错误。

The method thenReturn(Class<capture#1-of ? extends SomeClass>) in the type OngoingStubbing<Class<capture#1-of ? extends SomeClass>> is not applicable for the arguments (Class<SomeClassThatExtendsSomeClass>)

最佳答案

如果可以将方法声明更改为上面建议的@Bohemian,

public <T extends SomeClass> Class<T> getAClass();


那么您可以编写如下的模拟语句:

when(this.someInstance.<SomeClassThatExtendsSomeClass>getAClass())
     .thenReturn(SomeClassThatExtendsSomeClass.class);


否则,应按以下方式使用doReturn语义:

Mockito
    .doReturn(SomeClassThatExtendsSomeClass.class)
    .when(this.someInstance.<SomeClassThatExtendsSomeClass>getAClass());

10-08 19:28