0

非同期タスクにボルト フレームワークを使用しています。continueWithBlock セクションにあるコードをテストするにはどうすればよいですか?

BOOL wasFetchedFromCache;
   [[store fetchFileAsync:manifestURL allowfetchingFromCache:YES fetchedFromCache:&wasFetchedFromCache]
        continueWithBlock:^id(BFTask *task) {
            NSData *fileContents = task.result;
            NSError *localError;

            // code to test
            return nil
        }];
4

1 に答える 1

0

非同期タスクをテストするには、将来満たされる期待を作成できる XCTestExpectation を使用する必要があります。つまり、返される将来の結果はテスト ケースの期待値と見なされ、テストは結果がアサートされるまで待機します。以下のコードを見てください。簡単な非同期テストを書いています。

- (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");
}
于 2016-05-17T16:58:06.873 に答える