Vou tentar explicar usando um exemplo aqui:
// Difference between mocking, stubbing and spying
@Test
public void differenceBetweenMockingSpyingAndStubbing() {
List list = new ArrayList();
list.add("abc");
assertEquals(1, list.size());
List mockedList = spy(list);
when(mockedList.size()).thenReturn(10);
assertEquals(10, mockedList.size());
}
Aqui, tínhamos um objeto real inicial list
, no qual adicionamos um elemento e o tamanho esperado era um.
Nós espionar significado objeto real que pode instruir o método a ser arrancado . Por isso, declaramos que stubbed o método - size()
no objeto espião que retornará 10, independentemente do tamanho real.
Em poucas palavras, você espiará objetos reais e apagará alguns dos métodos .