Występuje test interfejsu użytkownika, w którym muszę przetestować funkcję asynchroniczną przy użyciu interfejsu API waitForExpectations
.Naruszenie interfejsu API podczas korzystania z waitForExpectations
Dostaję taki błąd:
"NSInternalInconsistencyException", "API violation - call made to wait without any expectations having been set."
I naprawdę nie rozumiem, jak mam poprawnie stworzył oczekiwania.
Pojawia się również błąd w dokumentacji: zgodnie z dokumentacją API to expectation(description:)
, ale kompilator tego nie zaakceptuje, ale zamiast tego muszę użyć XCTestExpectation()
, aby go utworzyć.
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)
}
Jaki błąd zrobić, gdy używasz 'self.expectation (opis:)'? Ponieważ byłby to właściwy sposób, aby to zrobić, w przeciwnym razie twoja klasa testowa nie wie, że stworzyłeś swoje oczekiwania. – Losiowaty
Jeśli spróbuję utworzyć oczekiwanie z parametrem opisu (niech exp1 = XCTestExpectation (opis: "ss2")), otrzymuję "Argument przekazany do wywołania, który nie przyjmuje argumentów" – onthemoon