你能尝试为第二个参数匹配器添加另一个argThat(argumentMatcher)吗?
另外,我发现最好不要将匿名类定义为方法,而不是像你所做的那样内联.然后你也可以用它来验证().
你的方法应该是这样的
ArgumentMatcher matcherOne(Cond cond1){
return new ArgumentMatcher () {
@Override
public boolean matches(Object argument) {
Cond cond = ((Cond) argument);
if (cond.getConditionKey().equals(cond1.getConditionKey())
return true;
return false;
}
}
}
ArgumentMatcher matcherTwo(OtherParam otherParam){
return new ArgumentMatcher () {
@Override
public boolean matches(Object argument) {
OtherParam otherParam = ((OtherParam) argument);
if ()
return true;
return false;
}
}
}
然后你可以这样调用你的方法,
when(uraMock.getUrules(argThat(matcherOne(cond1)), argThat(matcherTwo(otherParam)))).thenReturn(uRules);
然后,正如我可以调用verify,检查你的when方法是否真的被调用了
verify(uraMock).getUrules(argThat(matcherOne(cond1)), argThat(matcherTwo(otherParam)));
如果你不关心另一个参数,你可以这样做,
when(uraMock.getUrules(argThat(matcherOne(cond1)), argThat(any()))).thenReturn(uRules);
希望很清楚..祝你好运!