You can chain doReturn() calls before when(), so this works (mockito 1.9.5):
private static class Meh
{
public String meh() { return "meh"; }
}
@Test
public void testMeh()
{
final Meh meh = spy(new Meh());
doReturn("foo").doReturn("bar").doCallRealMethod().when(meh).meh();
assertEquals("foo", meh.meh());
assertEquals("bar", meh.meh());
assertEquals("meh", meh.meh());
}
Also, I didn’t know you could do when(x.y()).thenReturn(z1,z2), when I have to do this I use chained .thenReturn() calls as well:
when(x.y()).thenReturn(z1).thenThrow().thenReturn(z2)