Если я правильно понял ваш вопрос, то вы пытаетесь понять, как реализовать полный паттерн MVP с юнит-тестами (используя Mockito).
Я написал пример кода (приложение, которое отображает списоккниги), которая объясняет базовую реализацию MVP в одном тестовом примере JUnit: https://github.com/harneev/AndroidMVPkt
Давайте немного поговорим о классах:
ViewContract.kt
- Методы определения интерфейсакоторые ведут тупые представления для выполнения действия. ModelContract.kt
- Интерфейс, определяющий методы для выборки данных (из базы данных или с сервера), которые будут инкапсулированы в классе реализации. Presenter.kt
- Обрабатывает всю бизнес-логику и организует эту логику с помощью конкретного представления и модели, введенных в качестве параметров.
Примечание. Presenter является обычным классом, а оркестратор бизнес-логики зависит как от модели, так и от представлений.Некоторым разработчикам нравится добавлять Presenter
ссылку на View
интерфейс, но в этом смысле он чище.
Теперь перейдем к юнит-тестам (PresenterTest.kt
) для этого MVP design.
Я использую mockito-kotlin в качестве основы для насмешки для лучшей поддержки kotlin.
Я добавил только один тестовый пример вэтот сценарий называется test if books are displayed
(), который высмеивает ViewContract
и ModelContract
и инициализирует Presenter
.Наконец, метод Mockito.verify
проверяет, получил ли просмотр список книг, сгенерированных моделью.
Для лучших случаев модульного тестирования я всегда разбиваю его на следующие три сценария, которые объясняются следующим образом:
// 1. given
how mocks will behave when their respective methods are called
// 2. when
when execution method is called
// 3. then
verify / assert if required action is performed
Надеюсь, это поможет.