Um async Aufgabe zu testen, sollten Sie XCTestExpectation verwenden, die uns eine Erwartung erstellen können, die in der Zukunft erfüllt werden. Das bedeutet, dass die zukünftigen Ergebnisse als eine Erwartung im Testfall betrachtet werden, und der Test wird warten, bis die Ergebnisse für bestätigt vorliegen. Bitte schauen Sie sich den unten stehenden Code an, in den ich ein einfaches async testing schreibe.
- (void)testFetchFileAsync {
XCTestExpectation *expectation = [self expectationWithDescription:@"FetchFileAsync"];
BOOL wasFetchedFromCache;
[[store fetchFileAsync:manifestURL allowfetchingFromCache:YES fetchedFromCache:&wasFetchedFromCache]
continueWithBlock:^id(BFTask *task) {
NSData *data = task.result;
NSError *localError;
XCTAssertNotNil(data, @"data should not be nil");
[expectation fulfill];
// code to test
return nil
}];
[self waitForExpectationsWithTimeout:15.0 handler:^(NSError * _Nullable error) {
if (error) {
NSLog(@"Timeout error");
}
}];
XCTAssertTrue(wasFetchedFromCache, @"should be true");
}