使用泛型类型的模拟方法

Mock method using generic types

给出这个界面:

public interface JsonService {
    <T> T read(String path, Class<T> valueType);
}

方法是这样使用的:

MyClass object = jsonService.read("file.json", MyClass.class);

我想编写单元测试,并模拟这个方法。使用 Mockito,我嘲笑了 jsonService :

private final JsonService jsonService = Mockito.mock(JsonService.class);

我尽我所能嘲笑了这个方法:

when(jsonService.<MyClass>read(any(String.class), any(Class.class))).thenReturn(nonNullObject);

当测试运行时,方法 .read() returns null 而不是我的“nonNullObject”对象。我认为这与 any(Class.class) 不匹配有关 MyClass.class.

感谢您的帮助

你可以有严格的匹配器

when(jsonService.<MyClass>read(eq("file.json"), 
       eq(MyClass.class))).thenReturn(nonNullObject);