在此收集一些mock时不走mock的原因
1.参数是NULL
如果mock
的方法中有的参数本来是String
类型但是实际调用时传了null
,那么在写when()
语句时里边的参数不可以使用anyString()
,当我们打开anyString()
的方法时可以看到
public static String anyString() {
return reportMatcher(new InstanceOf(String.class)).returnString();
}
主要代码是:
new InstanceOf(String.class))
里边的有个matches()
方法值得注意,我们可以猜测这就是mock时的参数匹配方法
public InstanceOf(Class<?> clazz) {
this.clazz = clazz;
}
public boolean matches(Object actual) {
return actual != null && this.clazz.isAssignableFrom(actual.getClass());
}
actual
应当代表实际的值,可以看到如果我们实际参数传null
的话,那么自然的无法匹配上了
可以用anyObject()
、any()
、anyVararg()
,当我们看他们的matches()
方法时可以发现都是直接return true
public boolean matches(Object actual) {
return true;
}
网友评论