son reciben que privado parametros otro metodos metodo mandar llamar invocar enviar dentro como java unit-testing testing mocking mockito

privado - metodos que reciben parametros en java



Mockito: ¿Cómo verificar que un método fue llamado solo una vez con parámetros exactos ignorando las llamadas a otros métodos? (2)

La respuesta anterior se puede simplificar aún más.

Mockito.verify(foo).add("1"); Mockito.verify(foo).add(Mockito.anyString());

El método de verify solo parámetro es solo un alias para la implementación de times(1) .

¿Usando Mockito en Java cómo verificar que un método fue llamado solo una vez con parámetros exactos ignorando las llamadas a otros métodos?

Código de muestra:

public class MockitoTest { interface Foo { void add(String str); void clear(); } @Test public void testAddWasCalledOnceWith1IgnoringAllOtherInvocations() throws Exception { // given Foo foo = Mockito.mock(Foo.class); // when foo.add("1"); // call to verify foo.add("2"); // !!! don''t allow any other calls to add() foo.clear(); // calls to other methods should be ignored // then Mockito.verify(foo, Mockito.times(1)).add("1"); // TODO: don''t allow all other invocations with add() // but ignore all other calls (i.e. the call to clear()) } }

¿Qué se debe hacer en TODO: don''t allow all other invocations with add() sección TODO: don''t allow all other invocations with add() ?

Ya he intentado sin éxito:

  1. verifyNoMoreInteractions(foo);

No No permite llamadas a otros métodos como clear() .

  1. verify(foo, times(0)).add(any());

No No se tiene en cuenta que permitimos que una llamada add("1") .


Mockito.verify(foo, Mockito.times(1)).add("1"); Mockito.verify(foo, Mockito.times(1)).add(Mockito.anyString());

La primera verify verifica la llamada parametrizada esperada y la segunda verify verifica que solo haya una llamada para add .