美文网首页
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