2012-04-08 14 views
164

Con Mockito, quiero verify() una llamada al método con byte[] en su lista de argumentos, pero no encontré cómo escribir esto.Mockito matcher y matriz de primitivos

myMethod(byte[]) 

Sólo quiero algo así como anyByteArray(), cómo hacer eso con Mockito?

+0

¿Realmente no le importa cuál es el contenido de la matriz de bytes? Veo esto mucho en las pruebas unitarias, donde las personas usan cualquier cumplador X() porque son convenientes, pero realísticamente, casi siempre debe preocuparse por lo que se está transmitiendo. Si no usa una Respuesta que realmente consume el valor, probablemente deberías coincidir con un argumento real esperado. – Matunos

+0

@Matunos: Eso es discutible. El uso de cualquier matcher puede hacer que las pruebas sean más simples y la siguiente persona que observe la prueba no se distraiga con una coincidencia innecesariamente precisa y puede enfocarse en el propósito real de la prueba. –

+0

@tbruelle: tenga en cuenta que cada matriz en Java es un objeto. Eso te ayudaría al principio. –

Respuesta

321

me gustaría probar any(byte[].class)

+0

Oups ¡Lo extrañé, gracias! – tbruyelle

+30

Si desea verificar un byte específico [] puede usar 'AdditionalMatchers.aryEq (expectedArray)' –

+4

o Matchers. cualquiera(). – jbyler

1

O ..

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

Prueba esto:

AdditionalMatchers.aryEq(array); 
8

Prefiero usar Matchers.<byte[]>any(). Esto funcionó para mí.

6

Estoy de acuerdo con Mutanos y Alecio. Además, se pueden verificar tantas llamadas a métodos idénticos como sea posible (verificando las llamadas subsiguientes en el código de producción, el orden de las verificaciones no importa). Aquí está el código:

import static org.mockito.AdditionalMatchers.*; 

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

Puede utilizar Mockito.any() cuando los argumentos son matrices también. lo utilicé como esto:

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

utilicé Matchers.refEq para esto.

Cuestiones relacionadas