Ich habe eine Swift-Klasse, die für iOS nur etwas berechnet 11. Das bedeutet, dass ich die folgende Kontrolle haben:Wie kann ich mit Swift # verfügbar machen?
if #available(iOS 11, *) {
//do magic
}
Ich frage mich, wie ich #available
für meine Unit-Tests spotten kann. Ich möchte testen:
- Wenn
#available
mit den richtigen Parametern aufgerufen - Der Code innerhalb der if-Anweisung. Dafür hätte ich gerne eine Möglichkeit, das Ergebnis der Aussage
if #available(iOS 11, *)
zu erzwingen.
Update:
Da ich diese Schwierigkeiten hatte, änderte ich genähert und zog nach:
let result = device.systemVersion.compare("11", options: .numeric)
return result == .orderedSame || result == .orderedDescending
keine Antworten auf das Problem sehr geschätzt werden!
Related [Testing API Verfügbarkeit Swift2.0] (https://sharpfivesoftware.com/2015/09/02/testing- api-availability-with-swift-2-0 /) –
Hallo @ DávidPásztor, danke für den Artikel. Vielleicht habe ich den Artikel falsch verstanden, aber mit diesem Ansatz wäre ich nicht in der Lage, meine zwei Punkte zu testen, oder? Und mein SUT enthält diese if-Anweisung. Selbst wenn ich ein Strategieentwurfsmuster verwenden würde, wäre ich nicht in der Lage, die beiden erwähnten Punkte zu testen. Wenn ich falsch liege, können Sie gerne eine Antwort hinzufügen. –
Wenn ich den letzten Hinweis in dem Artikel richtig gelesen habe, sollten Sie beim Festlegen des Build-Ziels für eine bestimmte iOS-Version die '# available'-Anweisungen in Ihren Tests ausführen. Ich habe es jedoch nicht getestet und kann daher nicht für seine Richtigkeit bürgen. –