对象参数值与模式匹配时,mockito抛出异常

时间:2019-01-14 10:30:39

标签: java mockito

看起来很简单,但我无法提出有效的结构。

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

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

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

显然我遗漏了会抛出异常的部分,例如,路径中包含某些正则表达式,因为现在它为每个文件引发异常。

是否可以用满足我需要的东西替换any(Path.class)

1 个答案:

答案 0 :(得分:0)

您可以使用:

    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")是示例条件。用真实的替换它。