Как написать ядро ​​с архитектурой MVVM и выполнить модульное тестирование? - PullRequest
0 голосов
/ 15 апреля 2019

Я хочу разработать приложение для определения местоположения устройства и поиска рядом с областями.У меня есть базовое понимание архитектуры MVVM, но до сих пор я не смог найти способ разделить логику определения местоположения ядра на модели представлений.Я также хочу написать примеры тестовых примеров для одного и того же.

1 Ответ

0 голосов
/ 15 апреля 2019

Вы можете создать протокол LocationService, который определяет все методы (например, fetchCurrentPosition). Затем создайте конкретный класс, соответствующий этому протоколу, который реализует сервисы apple CoreLocation; этот класс будет использоваться моделью представления, например, и будет внедрен в инициализатор. Подумайте что-то вроде:

class MyViewModel {

    let locationService: LocationService

    init(locationService: LocationService = LocationServiceImpl()) {
        self.locationService = locationService
    }

}

LocationServiceImpl - это класс, соответствующий LocationService, который фактически использует apple CoreLocation; таким образом, позже вы можете смоделировать каждую функцию вашей службы определения местоположения, создав, например, класс LocationServiceMock, который соответствует LocationService; в ваших модульных тестах вы создадите модель представления с помощью смоделированной службы.

...