Cómo utilizar ArgumentCaptor para golpear?


En Mockito documentación y javadocs dice:

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

Pero no entiendo cómo ArgumentCaptor se puede utilizar para stubbing. ¿Puede alguien explicar la declaración anterior y mostrar cómo ArgumentCaptor se puede utilizar para stubbing o proporcionar un enlace que muestra cómo se puede hacer?

Author: Community, 2012-09-06

1 answers

Suponiendo el siguiente método para probar:

public boolean doSomething(SomeClass arg);

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

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

Porque solo puedes usar matcher durante stubbing:

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 fue llamado con un argumento específico, use ArgumentCaptor y este es el caso para el que está diseñado:

ArgumentCaptor<SomeClass> argumentCaptor = ArgumentCaptor.forClass(SomeClass.class);
verify(someObject).doSomething(argumentCaptor.capture());
assertThat(argumentCaptor.getValue(), equalTo(expected));
 234
Author: Rorick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-15 02:21:33