How do you write a unit test that checks whether an async function doesn't timeout?
I'm trying with regular XCTestExpectation
, but because await
suspends everything, it can't wait for the expectation.
In the code below, I'm checking that loader.perform()
doesn't take more than 1 second to execute.
func testLoaderSuccess() async throws {
let expectation = XCTestExpectation(description: "doesn't timeout")
let result = try await loader.perform()
XCTAssert(result.value == 42)
wait(for: [expectation], timeout: 1) // execution never gets here
expectation.fulfill()
}