基于匹配器的java Mockito ArgumentCaptor捕获条件
在mockito中,我们可以捕获一个方法的参数,该方法可能会被多次调用,如下所示:
verify(mocked, atLeastOnce())
.myMethod(myCaptor.capture());
然后
myCaptor.getAllValues()
然而,我需要筛选所有捕获的值,以找到我感兴趣的值进行验证
我想做的是这样的:
private class IsMySpecialArg extends ArgumentMatcher<Object> {
public boolean matches(Object other) {
// Matching condition
}
}
verify(mocked, atLeastOnce())
.myMethod(myCaptor.capture(argThat(new IsMySpecialArg()));
因此,我可以简单地调用myCaptor.getValue()
,并确保它指的是我实际上感兴趣捕获的论点。实现这一点的最佳方法是mockito
,它是否受支持,或者我的测试策略是否存在根本性的问题
# 1 楼答案
我在编写测试时经常使用ArgumentMatchers。下面是一个验证传递给模拟对象的参数时可以执行的示例:
显然,预期参数可能只是一个字符串,或者更复杂的东西,但基本上是检查是否使用与预期参数匹配的参数调用了mock