Tengo un método que se llama dos veces y quiero capturar el argumento de la segunda llamada al método.
Esto es lo que he intentado:
ArgumentCaptor<Foo> firstFooCaptor = ArgumentCaptor.forClass(Foo.class);
ArgumentCaptor<Foo> secondFooCaptor = ArgumentCaptor.forClass(Foo.class);
verify(mockBar).doSomething(firstFooCaptor.capture());
verify(mockBar).doSomething(secondFooCaptor.capture());
// then do some assertions on secondFooCaptor.getValue()
Pero obtengo una TooManyActualInvocations
excepción, ya que Mockito piensa que doSomething
solo debería llamarse una vez.
¿Cómo puedo verificar el argumento de la segunda llamada de doSomething
?
fuente
doSomething()
en cada invocación por separado con esto?Person person = new Person("John"); doSomething(person); person.setName("Jane"); doSomething(person);
el argumento capturado será el mismo dos veces (porque en realidad es el mismo objeto de persona), por lo tantocapturedPeople.get(0).getName() == capturedPeople.get(1).getName() == "Jane"
, consulte también groups.google.com/forum/#!msg/mockito/ KBRocVedYT0 / 5HtARMl9r2wJ .Runnable
) y, si es necesario, haría una verificación de tipo más específica en el argumento capturado.