Я получил этот класс, который я хотел бы писать тесты для:тесты писать юнит для RxSwift
import CoreLocation
import RxCocoa
import RxSwift
struct LocationManager {
private (set) var authorized: Driver<Bool>
private let coreLocationManager = CLLocationManager()
init() {
coreLocationManager.distanceFilter = kCLDistanceFilterNone
coreLocationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
authorized = Observable.deferred { [weak coreLocationManager] in
let status = CLLocationManager.authorizationStatus()
guard let coreLocManager = coreLocationManager else {
return Observable.just(status)
}
return coreLocManager
.rx_didChangeAuthorizationStatus
.startWith(status)
}
.asDriver(onErrorJustReturn: CLAuthorizationStatus.NotDetermined)
.map {
switch $0 {
case .AuthorizedWhenInUse:
return true
default:
return false
}
}
coreLocationManager.requestWhenInUseAuthorization()
}
}
В основном я хочу, чтобы проверить, имеет ли уполномоченный Driver
правильное значение, основанное на возможных CLAuthorizationStatuses
. Мне нужен намек в правильном направлении, так как я не знаком с модульным тестированием с RxSwift. Я думаю, что мой лучший вариант - создать макет CLLocationManager
, который возвращает некоторый CLAuthorizationStatus, когда вызывается authorizationStatus()
, и после этого я проверю значение авторизованного Driver
правильно?
Любое объяснение того, как протестировать этот класс LocationManager
, оценено.