如何在Obj C中编写没有完成块的异步方法的单元测试

时间:2016-08-11 09:05:48

标签: ios objective-c asynchronous objective-c-blocks xctest

我有一个在内部调用API的方法。该方法没有任何完成处理程序。

-(void) methodToBeTested{
    [self callAPIWithCompletionHandler:^(NSArray *data,NSError *error)
     {
         //Here I get the response and sets the models.
     }];
}

现在我需要测试方法" methodToBeTested" API调用后设置的模型的基础。

任何建议?

1 个答案:

答案 0 :(得分:1)

示例:

XCTestExpectation *documentOpenExpectation = [self expectationWithDescription:@"document open"];

    NSURL *URL = [[NSBundle bundleForClass:[self class]]
                              URLForResource:@"TestDocument" withExtension:@"mydoc"];
    UIDocument *doc = [[UIDocument alloc] initWithFileURL:URL];
    [doc openWithCompletionHandler:^(BOOL success) {
        XCTAssert(success);
        [documentOpenExpectation fulfill];
    }];

    [self waitForExpectationsWithTimeout:1 handler:^(NSError *error) {
        [doc closeWithCompletionHandler:nil];
    }];
}

使用Xcode文档查看测试下的异步操作的编写测试。 https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/04-writing_tests.html