verify()
Mockitoを使用して、引数リストにメソッドを呼び出したいのですが、byte[]
これを作成する方法が見つかりませんでした。
myMethod( byte[] )
私はただanyByteArray()
、Mockitoでそれを行う方法のようなものが欲しいですか?
やってみますany(byte[].class)
これを試して:
AdditionalMatchers.aryEq(array);
むしろ使用したいMatchers.<byte[]>any()
です。これは私のために働いた。
MutanosとAlecioに同意します。さらに、できるだけ多くの同一のメソッド呼び出しをチェックできます(本番コードで後続の呼び出しを検証する場合、検証の順序は重要ではありません)。コードは次のとおりです。
import static org.mockito.AdditionalMatchers.*;
verify(mockObject).myMethod(aryEq(new byte[] { 0 }));
verify(mockObject).myMethod(aryEq(new byte[] { 1, 2 }));
私はこれに使用Matchers.refEq
しました。
引数が配列の場合もMockito.any()を使用できます。私はそれをこのように使用しました:
verify(myMock, times(0)).setContents(any(), any());
を使用して、いつでもカスタムマッチャーを作成できますargThat
Mockito.verify(yourMockHere).methodCallToBeVerifiedOnYourMockHere(ArgumentMatchers.argThat(new ArgumentMatcher<Object>() {
@Override
public boolean matches(Object argument) {
YourTypeHere[] yourArray = (YourTypeHere[]) argument;
// Do whatever you like, here is an example:
if (!yourArray[0].getStringValue().equals("first_arr_val")) {
return false;
}
return true;
}
}));
私のために働いたのはorg.mockito.ArgumentMatchers.isA
例えば:
isA(long[].class)
それはうまくいきます。
相互の実装の違いは次のとおりです。
public static <T> T any(Class<T> type) {
reportMatcher(new VarArgAware(type, "<any " + type.getCanonicalName() + ">"));
return Primitives.defaultValue(type);
}
public static <T> T isA(Class<T> type) {
reportMatcher(new InstanceOf(type));
return Primitives.defaultValue(type);
}