Mockito und Byte Arrays
Der Aufruf von Methoden mit Byte-Arrays ist mit Mockito kein grosses Problem. Um ein Byte-Array zu matchen wird nicht, wie für die ‘Standard’-Argumente, die Matcher-Klasse verwendet, sondern die AddiationalMatchers. Die AdditionalMatchers können für alle primitiven Arrays von Java verwendet werden.
Ein kleines Beispiel um dies zu verdeutlichen:
// handles several types for some purpose
public class TypeHandler() {
public void byteMethod(byte[] array) {
// do something here with byte array
}
}
Die von Mockito zu verifizierende Methode byteMethod hat die oben gezeigte Signatur und es soll getestet werden, ob die Methode auch einmal mit dem entsprechenden Byte-Array aufgerufen wird:
public void testByteMethod() {
byte[] data = new byte[7];
// create Mock
TyepHandler typeHandlerMock = mock(TypeHandler.class);
Foo foo = new Foo();
foo.setTypeHandler(tyepHandlerMock);
// within this method the 'byteMethod' should be called once
foo.runByteMethod();
verify(typeHandlerMock).byteMethod(AdditionalMatchers.aryEq(data));
}
Mit Hilfe des AdditionalMatchers und der Methode aryEq wird überprüft, ob auch das erwarte Byte-Array an die Methode übergeben wird. Das ganze kann man aber auch allgemeiner halten:
verify(typeHandlerMock).byteMethod(any(byte[].class));
Nun überprüft Mockito, ob die Methode byteMethod mit irgend einem Byte-Array aufgerufen wird.