Ich führe einen UI-Test aus, bei dem ich eine asynchrone Funktion mit der API waitForExpectations
testen muss.API-Verletzung bei Verwendung von waitForExpections
Ich erhalte diese Fehlermeldung:
"NSInternalInconsistencyException", "API violation - call made to wait without any expectations having been set."
Ich verstehe wirklich nicht, wie ich richtig die Erwartung geschaffen haben.
Außerdem scheint es einen Dokumentationsfehler zu geben: laut der Dokumentation ist die API expectation(description:)
, aber der Compiler akzeptiert das nicht, stattdessen muss ich XCTestExpectation()
verwenden, um einen zu erstellen.
func testExample() {
XCTAssertTrue(state == .STATE_NOT_READY)
let exp1 = XCTestExpectation()
let queue = DispatchQueue(label: "net.tech4freedom.AppTest")
let delay: DispatchTimeInterval = .seconds((2))
queue.asyncAfter(deadline: .now() + delay) {
XCTAssertTrue(true)
exp1.fulfill()
}
self.waitForExpectations(timeout: 4){ [weak self] error in
print("X: async expectation")
XCTAssertTrue(true)
}
self.waitForExpectations(timeout: 10.0, handler: nil)
}
Welche Fehler Sie erhalten, wenn Sie 'self.expectation (Beschreibung) verwenden'? Weil dies der richtige Weg wäre, um dies zu tun, sonst weiß Ihre Testklasse nicht, dass Sie Ihre Erwartung erstellt haben. – Losiowaty
Wenn ich versuche, die Erwartung mit dem Parameter description (let exp1 = XCTestExpectation (Beschreibung: "ss2")), bekomme ich "Argument übergeben, um keine Argumente zu nehmen" – onthemoon