This code from the documentation is totally baffling me:
List list = new LinkedList();
List spy = spy(list);
when(spy.size()).thenReturn(100); // <--- how does this spy know
// not to call the real method????
//using the spy calls *real* methods
spy.add("one");
spy.add("two");
I get it, Mockito is weird and hardly still in Java. Confusing thing is spy.*
has to evaluate fully before it knows whether it's wrapped in a when()
or something. How on earth would the first spy.*
method not call on the real object but the later ones doe?