Mockito verify()
ile byte[]
, argüman listesinde bir yöntem çağrısı yapmak istiyorum , ancak bunu nasıl yazacağımı bulamadım.
myMethod( byte[] )
Sadece gibi bir şey istiyorum anyByteArray()
, bunu Mockito ile nasıl yapabilirim?
Mockito verify()
ile byte[]
, argüman listesinde bir yöntem çağrısı yapmak istiyorum , ancak bunu nasıl yazacağımı bulamadım.
myMethod( byte[] )
Sadece gibi bir şey istiyorum anyByteArray()
, bunu Mockito ile nasıl yapabilirim?
Yanıtlar:
Denerdim any(byte[].class)
AdditionalMatchers.aryEq(expectedArray)
Bunu dene:
AdditionalMatchers.aryEq(array);
Kullanmayı tercih ederim Matchers.<byte[]>any()
. Bu benim için çalıştı.
Mutanos ve Alecio'ya katılıyorum. Ayrıca, mümkün olduğunca çok sayıda özdeş yöntem çağrısı kontrol edilebilir (üretim kodundaki müteakip çağrıları doğrulamak, doğrulamanın sırası önemli değildir). İşte kod:
import static org.mockito.AdditionalMatchers.*;
verify(mockObject).myMethod(aryEq(new byte[] { 0 }));
verify(mockObject).myMethod(aryEq(new byte[] { 1, 2 }));
Argümanlar da dizilerken Mockito.any () öğesini kullanabilirsiniz. Ben böyle kullandım:
verify(myMock, times(0)).setContents(any(), any());
Benim için işe yarayan org.mockito.ArgumentMatchers.isA
Örneğin:
isA(long[].class)
iyi çalışıyor.
birbirlerinin uygulama farkı:
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);
}
Her zaman kullanarak özel bir Eşleştirici oluşturabilirsiniz 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;
}
}));