2012-04-08 10 views
164

Mit Mockito möchte ich verify() einen Methodenaufruf mit byte[] in seiner Argumentliste, aber ich habe nicht gefunden, wie dies zu schreiben.Mockito Matcher und Array von Primitiven

myMethod(byte[]) 

ich wie anyByteArray() etwas wollen, wie mit Mockito zu tun?

+0

Ist es Ihnen wirklich egal, was der Inhalt des Byte-Arrays ist? Ich sehe das oft in Komponententests, wo Leute AnyX() -Matchers verwenden, weil sie bequem sind, aber realistisch sollte man sich fast immer darum kümmern, was hineingereicht wird. Wenn Sie keine Antwort verwenden, die tatsächlich den Wert verbraucht, Sie sollten wahrscheinlich auf ein tatsächlich erwartetes Argument passen. – Matunos

+0

@Matunos: Das ist umstritten. Die Verwendung der any-matchers kann Tests vereinfachen und die nächste Person, die den Test betrachtet, wird nicht durch unnötig genaue Übereinstimmung abgelenkt und kann sich auf den eigentlichen Zweck des Tests konzentrieren. –

+0

@tbruelle: Bitte beachten Sie, dass jedes Array in Java ein Objekt ist. Das würde dir am Anfang helfen. –

Antwort

321

würde ich any(byte[].class)

+0

Oups Ich habe es verpasst, danke! – tbruyelle

+30

Wenn Sie ein bestimmtes Byte [] überprüfen möchten, können Sie 'AdditionalMatchers.aryEq (expectedArray)' –

+4

Oder Matchers verwenden. any(). – jbyler

1

versuchen diese Oder ..

byte[] sampleTextFileAsBytes = new byte[]{anyByte()}; 
20

Versuchen:

AdditionalMatchers.aryEq(array); 
8

ich eher Matchers.<byte[]>any() verwenden würde. Das hat für mich funktioniert.

6

Ich stimme Mutanos und Alecio zu. Ferner kann man so viele identische Methodenaufrufe wie möglich prüfen (die nachfolgenden Aufrufe im Produktionscode verifizieren, die Reihenfolge der Verifizierungen spielt keine Rolle). Hier ist der Code:

import static org.mockito.AdditionalMatchers.*; 

    verify(mockObject).myMethod(aryEq(new byte[] { 0 })); 
    verify(mockObject).myMethod(aryEq(new byte[] { 1, 2 })); 
0

können Sie verwenden Mockito.any(), wenn Argumente sind auch Arrays. Ich benutzte es wie folgt aus:

verify(myMock, times(0)).setContents(any(), any());