美文网首页一入iOS海iOS Developer自动化与单元测试
iOS如何测试没有回调方法的异步函数

iOS如何测试没有回调方法的异步函数

作者: 韧卓 | 来源:发表于2017-03-02 16:32 被阅读23次
    • iOS单元测试的重要性无需多言。XCTest作为苹果的官方测试框架,自从引入了expectations之后,很好地解决了异步函数测试的问题。
    • 如同官方示例所述,通过创建XCTestExpectation实例,并在回调block中fulFill,可以很好地处理网络请求回调的事件。
    • 但是,如果被测的异步函数没有回调,要怎么测试呢?
    • 以下代码演示了通过经典的GCD延迟方法dispatch_after,结合XCTestExpectation,实现测试含有私有private异步方法或者属性@property的目的。

    objc
    DataSource *dataSource = [[DataSource alloc] init];
    [dataSource loadData];
    XCTestExpectation *expectation = [self expectationWithDescription:@"Dummy expectation"];
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    XCTAssert(dataSource.dataArray.count > 0, @"Data source has populated array after initializing and, you know, giving it some time to breath, man.");
    [expectation fulfill];
    });
    [self waitForExpectationsWithTimeout:20.0 handler:nil];
    objc

    相关文章

      网友评论

        本文标题:iOS如何测试没有回调方法的异步函数

        本文链接:https://www.haomeiwen.com/subject/aqlkgttx.html