Captura de argumentos con ArgumentCaptor
Use ArgumentCaptor de Mockito para capturar y comprobar los objetos exactos que se pasan a un mock en escenarios complejos.
Captura de argumentos con ArgumentCaptor es una lección gratuita de Testing Mastery: JUnit, Mockito & Integration Tests en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Testing Mastery: JUnit, Mockito & Integration Tests, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Testing Mastery: JUnit, Mockito & Integration Tests incluye 4 lecciones en total.
Partes de esta lección aún no han sido traducidas y se muestran en inglés.
Inspecting What Was Passed
Sometimes verifying that a method was called is not enough. You need to assert on the actual argument the code constructed and passed. Mockito's ArgumentCaptor grabs that value for inspection.
Matchers vs Captors
Argument matchers like eq(...) check inputs during verification. A captor instead records the argument so you can run rich assertions afterward.
Creating a Captor
Declare a captor for the type you expect to capture.
ArgumentCaptor<User> captor =
ArgumentCaptor.forClass(User.class);Capturing During Verify
Pass the captor's capture() where the argument would go inside verify.
verify(repo).save(captor.capture());Reading the Value
After verification, retrieve the captured object and assert on its fields.
User saved = captor.getValue();
assertEquals("Ada", saved.getName());Full Example
Here we confirm the service builds the correct user before saving it.
service.register("Ada", "ada@x.io");
verify(repo).save(captor.capture());
assertEquals("ada@x.io",
captor.getValue().getEmail());Capturing Multiple Calls
If the method was called several times, use getAllValues() to get every captured argument in order.
verify(repo, times(2)).save(captor.capture());
List<User> all = captor.getAllValues();The @Captor Annotation
You can declare captors as fields with @Captor when using the Mockito extension, reducing boilerplate.
@Captor
ArgumentCaptor<User> captor;Captor or Matcher?
Use a matcher for simple equality checks at call time. Reach for a captor when the argument is complex, built internally, or needs multiple assertions.
Avoid Overuse
Captors couple tests to internal construction details. Prefer them for genuinely complex arguments, not for everything, to keep tests resilient.
Why It Matters
Captors let you verify the precise data your code hands to collaborators, catching subtle mapping or transformation bugs.
Quick Check
How do you retrieve the captured argument after verification?
Recap
You learned argument capturing:
ArgumentCaptor.forClassor@Captorcreates a captor- Pass
capture()insideverify getValue()/getAllValues()read the captured data- Use captors for complex, internally built arguments
Preguntas frecuentes
¿La lección «Captura de argumentos con ArgumentCaptor» es gratis?
Sí — el texto completo de «Captura de argumentos con ArgumentCaptor» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Testing Mastery: JUnit, Mockito & Integration Tests, actualiza a CoddyKit PRO. El curso de Testing Mastery: JUnit, Mockito & Integration Tests incluye 4 lecciones en total.
¿Qué aprenderé en «Captura de argumentos con ArgumentCaptor»?
Use ArgumentCaptor de Mockito para capturar y comprobar los objetos exactos que se pasan a un mock en escenarios complejos. Practicas Testing Mastery: JUnit, Mockito & Integration Tests con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Testing Mastery: JUnit, Mockito & Integration Tests?
No se requiere experiencia previa. Testing Mastery: JUnit, Mockito & Integration Tests en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Captura de argumentos con ArgumentCaptor»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Testing Mastery: JUnit, Mockito & Integration Tests?
Sí. Cada lección de Testing Mastery: JUnit, Mockito & Integration Tests incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Respuestas y callbacks personalizados
- Simulación de métodos estáticos y constructores
- Buenas prácticas de Mockito
- Captura de argumentos con ArgumentCaptor