首页 > 解决方案 > 当对象参数值与模式匹配时,Mockito 抛出异常

问题描述

看起来很简单,但我想不出有效的结构。

Path每当文件包含某些正则表达式时,我都想抛出异常。我有一个循环的文件列表,每当我遇到无效Path异常时,都会抛出异常,并且文件不会添加到成功文件列表中。

尝试使用 Mockito 对其进行测试,例如:

    doThrow(DefaultException.class).when(service).foo(any(Path.class), any(Path.class));

显然我错过了抛出异常的部分,例如路径中有一些特定的正则表达式,因为现在它正在为每个文件抛出异常。

有没有办法any(Path.class)用能满足我需求的东西来代替?

标签: javamockito

解决方案


您可以使用:

    Matchers.argThat(new ArgumentMatcher<Path>() {
        @Override
        public boolean matches(Object o) {
            Path p = (Path) o;
            if(p.toString().equals("some")) {
                return true;
            }else {
                return false;
            }
        }
    }

而不是any(Path.class).

PS:p.toString().equals("some")是样品条件。换成真实的。


推荐阅读