Недавно я столкнулся с интересной дилеммой, которая, вероятно, не была такой уж необычной проблемой. Мне нужно было смоделировать метод, существовавший в том же классе, который я тестировал.

Эта проблема помогла мне осознать, что я не понял концепции мокито-шпиона.

Если вы хотите имитировать весь класс, вы можете инициализировать этот класс как макет, но если вы хотите использовать в этом классе функции без макета и по-прежнему имитировать некоторые из них, вам нужно инициализировать класс как шпион.

Вот как вы инициализируете класс как Mockito Mock:

Apple apple = Mockito.mock(Apple.class);

Теперь, если вы планировали использовать некоторые методы класса и имитировать остальные, вы можете объявить шпиона следующим образом:

Apple apple = Mockito.spy(Apple.class);

Давайте посмотрим на тестируемый нами класс под названием apple:

Если мы хотим смоделировать метод getFiberToSeedRation() и протестировать getQualityOfApple() . Вы бы сделали это следующим образом:

Заключение

Если вы пытаетесь выполнить модульное тестирование, используйте mockito spy, чтобы издеваться над частью класса, который вы пытаетесь исправить. Я надеюсь, что это помогло кому-то, кто искал то же самое, что и я сегодня. Удачи!

Ваше здоровье!