天天看點

java logic賦予多個值_java – 具有多個參數的Mockito參數比對器

你能嘗試為第二個參數比對器添加另一個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);

希望很清楚..祝你好運!