我想在 Mockito 中模拟一个类。然后它将发出一个 .newInstance() 调用,预计将返回一个实际的类实例(在我的情况下将返回一个模拟)。
如果设置正确,那么我可以这样做:
ArrayList myListMock = mock(ArrayList.class);
when(myVar.newInstance()).thenReturn(myListMock);
我知道我可以设置它,以便类 ArrayList 的新实例将成为模拟(使用 PowerMockito whenNew),只是想知道是否有办法模拟这种类对象,所以我不必重写实例创建...
下面是我要模拟的真实类,我无法更改它由接口定义的结构。我正在寻找的是一种在调用初始化时提供 cvs 的方法。
public class InputConstraintValidator
implements ConstraintValidator<InputValidation, StringWrapper> {
Class<? extends SafeString> cvs;
public void initialize(InputValidation constraintAnnotation) {
cvs = constraintAnnotation.inputValidator();
}
public boolean isValid(StringWrapper value,
ConstraintValidatorContext context) {
SafeString instance;
try {
instance = cvs.newInstance();
} catch (InstantiationException e) {
return false;
} catch (IllegalAccessException e) {
return false;
}
}