你能嘗試為第二個參數比對器添加另一個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);
希望很清楚..祝你好運!