美文网首页
Mock一个方法时命名参数类型都对的上,但是不走mock

Mock一个方法时命名参数类型都对的上,但是不走mock

作者: 马木木 | 来源:发表于2019-05-24 17:42 被阅读0次

在此收集一些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;
    }

相关文章

网友评论

      本文标题:Mock一个方法时命名参数类型都对的上,但是不走mock

      本文链接:https://www.haomeiwen.com/subject/mrenzqtx.html