Недавно я столкнулся с интересной дилеммой, которая, вероятно, не была такой уж необычной проблемой. Мне нужно было смоделировать метод, существовавший в том же классе, который я тестировал.
Эта проблема помогла мне осознать, что я не понял концепции мокито-шпиона.
Если вы хотите имитировать весь класс, вы можете инициализировать этот класс как макет, но если вы хотите использовать в этом классе функции без макета и по-прежнему имитировать некоторые из них, вам нужно инициализировать класс как шпион.
Вот как вы инициализируете класс как Mockito Mock:
Apple apple = Mockito.mock(Apple.class);
Теперь, если вы планировали использовать некоторые методы класса и имитировать остальные, вы можете объявить шпиона следующим образом:
Apple apple = Mockito.spy(Apple.class);
Давайте посмотрим на тестируемый нами класс под названием apple:
Если мы хотим смоделировать метод getFiberToSeedRation()
и протестировать getQualityOfApple()
. Вы бы сделали это следующим образом:
Заключение
Если вы пытаетесь выполнить модульное тестирование, используйте mockito spy, чтобы издеваться над частью класса, который вы пытаетесь исправить. Я надеюсь, что это помогло кому-то, кто искал то же самое, что и я сегодня. Удачи!
Ваше здоровье!