创建ArgumentMatcher,根据不同的入参匹配对应行为
/**
* 创建ArgumentMatcher,根据不同参数值来匹配对应的行为
*/
private <T> T createArgumentMatcher(final Predicate<T> predicate) {
return Mockito.argThat(new ArgumentMatcher<T>() {
@Override
public boolean matches(Object argument) {
if (null == argument) {
return false;
}
return predicate.apply((T) argument);
}
});
}
实现方法
Predicate<ProductFlowFilter> one = new Predicate<ProductFlowFilter>() {
@Override
public boolean apply(@Nullable ProductFlowFilter filter) {
return "0".equals(filter.getId1());
}
};
Predicate<ProductFlowFilter> two = new Predicate<ProductFlowFilter>() {
@Override
public boolean apply(@Nullable ProductFlowFilter filter) {
return "-999999".equals(filter.getId1());
}
};
Mockito.when(productFlowDao.getViewFlowData(createArgumentMatcher(one))).thenReturn(json1);
Mockito.when(productFlowDao.getViewFlowData(createArgumentMatcher(two))).thenReturn(json2);
创建对象one和two,根据对象属性的不同值返回不同的mock结果