bekam ich diese Klasse, die Ich mag würde für Tests schreiben:schreiben Unit-Tests für 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()
}
}
Grundsätzlich möchte ich testen, ob das genehmigte Driver
die basierend auf möglichen CLAuthorizationStatuses
richtigen Wert hat. Ich brauche einen Hinweis in die richtige Richtung, da ich mit Unit-Tests mit RxSwift nicht vertraut bin. Ich denke, meine beste Option ist es, eine Kopie von CLLocationManager
zu erstellen, die einige CLAuthorizationStatus zurückgibt, wenn authorizationStatus()
aufgerufen wird und ich würde dann den Wert der autorisierten Driver
richtig überprüfen?
Jede Erklärung, wie man diese LocationManager
Klasse testet, wird geschätzt.