Вы можете создать протокол LocationService
, который определяет все методы (например, fetchCurrentPosition
).
Затем создайте конкретный класс, соответствующий этому протоколу, который реализует сервисы apple CoreLocation
; этот класс будет использоваться моделью представления, например, и будет внедрен в инициализатор. Подумайте что-то вроде:
class MyViewModel {
let locationService: LocationService
init(locationService: LocationService = LocationServiceImpl()) {
self.locationService = locationService
}
}
LocationServiceImpl
- это класс, соответствующий LocationService
, который фактически использует apple CoreLocation
; таким образом, позже вы можете смоделировать каждую функцию вашей службы определения местоположения, создав, например, класс LocationServiceMock
, который соответствует LocationService
; в ваших модульных тестах вы создадите модель представления с помощью смоделированной службы.