这是一个真正的新手问题,但我不知道该如何处理。
我必须模拟一个方法来返回这样的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());