Как ждать в XCTest в течение T секунд без ошибки тайм-аута? - PullRequest
0 голосов
/ 09 мая 2018

Я хочу отложить выполнение теста на 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 Ответ

0 голосов
/ 09 мая 2018

Вы можете использовать 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")
 }
...