Когда вы используете @Spy, синтаксис немного отличается от использования обычного экземпляра Injected.
Mockito.doReturn("not reachable").when(spy).get(0);
Шпион, как полезный, когда вы хотите "издеваться" над публичным методом, который находится в классе, который вы тестируете.
например
Class A {
public void methodA() {
// do something
}
public void methodB() {
// do something
call methodA();
// do something else
}
}
Здесь открытый метод "methodA" класса A вызывается из открытого метода "methodB". Таким образом, при написании тестового примера для «methodB», мы высмеиваем вызов «methodA», используя шпион. И мы самостоятельно тестируем «метод А»