¿Cómo usar ArgumentCaptor para stubbing?

En la documentación de Mockito y javadocs , dice

Se recomienda usar ArgumentCaptor con verificación, pero no con stubbing.

pero no entiendo cómo ArgumentCaptor puede usarse para el troquelado. ¿Alguien puede explicar la statement anterior y mostrar cómo ArgumentCaptor se puede usar para anotar o proporcionar un enlace que muestre cómo se puede hacer?

Suponiendo el siguiente método para probar:

public boolean doSomething(SomeClass arg); 

La documentación de Mockito dice que no debe usar captor de esta manera:

 when(someObject.doSomething(argumentCaptor.capture())).thenReturn(true); assertThat(argumentCaptor.getValue(), equalTo(expected)); 

Debido a que solo puede usar el mezclador durante el muestreo:

 when(someObject.doSomething(eq(expected))).thenReturn(true); 

Pero la verificación es una historia diferente. Si su prueba necesita asegurarse de que este método se invocó con un argumento específico, use ArgumentCaptor y este es el caso para el que está diseñado:

 ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass(SomeClass.class); verify(someObject).doSomething(argumentCaptor.capture()); assertThat(argumentCaptor.getValue(), equalTo(expected));