タイムアウトを生成せずに、テストの進行を T 秒間遅らせたい。
まず、明白なことを試しました:
sleep(5)
XCTAssert(<test if state is correct after this delay>)
しかしそれは失敗しました。
それから私は試しました:
let promise = expectation(description: "Just wait 5 seconds")
waitForExpectations(timeout: 5) { (error) in
promise.fulfill()
XCTAssert(<test if state is correct after this delay>)
}
私のXCTAssert()
場合は成功しました。しかし、waitForExpectations()
タイムアウトで失敗しました。
これは、XCTest
待機関数こう言っています。
タイムアウトは常にテスト失敗として扱われます。
どのような選択肢がありますか?
ベストアンサー1
使用できますXCTWaiter.wait機能。
例えば:
let exp = expectation(description: "Test after 5 seconds")
let result = XCTWaiter.wait(for: [exp], timeout: 5.0)
if result == XCTWaiter.Result.timedOut {
XCTAssert(<test if state is correct after this delay>)
} else {
XCTFail("Delay interrupted")
}