#mobile_native #android #kotlin
Robert Anson Heinlein «Stranger in a strange land»
В разработке сложных мобильных приложений могут протекать процессы, требующие фиктивных тестовых данных или mock-объектов. Например, процесс написания unit-тестов и запуска их в CI/CD либо демонстрация приложения в demo-режиме, где использование оригинальных источников данных невозможно или нецелесообразно.
Рассмотрим, как произвести подмену модели
ViewModel на MockViewModel при реализации demo-режима приложения. Добавим в gradle-файл модуля добавим boolean-переменную, обозначив демо-сборку приложения.Получение
ViewModel во фрагменте выглядит так:ViewModelProviders.of(yourFragment).get(YourViewModel.class)
Реализуем класс
ViewModelHolder, который будет уточнять класс модели ViewModel исходя из используемого режима приложения.Во всех фрагментах приложения мы можем использовать вызов метода
getViewModel класса ViewModelHolder для получения нужной модели.ViewModelHolder.getViewModel(this,YourViewModel::class.java)
Если описать свою модель
MockYourViewModel, наследуя ее от YourViewModel, то в ней необходимо будет переопределить только те методы, которые нужно мокнуть. В gradle можно явно указать, какой тип ViewModel необходимо использовать. А использование BuildConfig.IS_DEMO не будет дублироваться по всему приложению.