我如何使用thenReturn for Class?

toy*_*toy 2 java stub mockito

这是一个非常新手的问题,但我不知道如何存根.

我必须模拟一个像这样返回Class的方法.

public Class<? extends SomeClass> getAClass();
Run Code Online (Sandbox Code Playgroud)

如果我做这样的事情

when(this.someInstance.getAClass())
    .thenReturn(SomeClassThatExtendsSomeClass.class);
Run Code Online (Sandbox Code Playgroud)

我收到编译错误.

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>)
Run Code Online (Sandbox Code Playgroud)

Vik*_*dor 5

如果方法声明可以改为上面提到的@Bohemian,

public <T extends SomeClass> Class<T> getAClass();
Run Code Online (Sandbox Code Playgroud)

然后你可以编写你的模拟语句如下:

when(this.someInstance.<SomeClassThatExtendsSomeClass>getAClass())
     .thenReturn(SomeClassThatExtendsSomeClass.class);
Run Code Online (Sandbox Code Playgroud)

否则,doReturn语义应该如下使用:

Mockito
    .doReturn(SomeClassThatExtendsSomeClass.class)
    .when(this.someInstance.<SomeClassThatExtendsSomeClass>getAClass());
Run Code Online (Sandbox Code Playgroud)