使用泛型类型的模拟方法
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);
给出这个界面:
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);