Dentro de mi clase de prueba, tengo la siguiente declaración burlona:

when(metadata.getGranularity(message)).thenReturn(new Assembly.Partition.Builder.build());

Básicamente, llamo a esta declaración anterior a través de dos métodos de prueba diferentes. Uno existe y funciona bien, el segundo es mi código recién escrito que llama al mismo método. Se menciona dentro del método de configuración. Se ejecuta en ambos casos y cuando evalúo el valor, da una referencia de objeto en ambos casos, así:

result= {Assembly$Partition@3793}

El código en mi clase del que se está burlando es:

Assembly.Partition granularity = metadata.getGranularity(message);

Pero cuando el depurador pasa del método de prueba al código, el constructor crea una referencia de objeto en el primer caso, es decir, granularity= {Assembly$Partition@3892}, pero en el segundo caso, da la referencia como nula.

Además, a veces, durante la depuración, me da este error de depuración de que la partición no puede ser devuelta por toString ().

Editar

El método de prueba existente es este: -

public void publish()
filePublisher.publishFirst(message, event, name);
verify(file publisher, times (1)).publishFile(anyString(), anyList(Mylist.class));

Y mi nuevo método es: -

public void publish2()
filePublisher.publishSecond(date, id, type);
verify(file publisher, times (1)).publishFile(anyString(), anyList(Mylist.class));

Ambos métodos calculan varios datos para llamar al método <×publishFile.

0
Anmol Khanna 24 ago. 2020 a las 11:00

1 respuesta

La mejor respuesta

Realmente no ha agregado suficiente código (real) para precisar esto, ¡así que no espere una respuesta real! He aquí una suposición:

when(metadata.getGranularity(message))... 

... solo se burla cuando llega ese message exacto. El ejemplo de publish2 es

filePublisher.publishSecond(date, id, type);

Donde date != message.

Prueba esto:

when(metadata.getGranularity(any())).thenReturn(new Assembly.Partition.Builder.build());
1
drekbour 24 ago. 2020 a las 08:42