我已将Google Toolbox for Mac安装到 Xcode 中,并按照此处的说明设置单元测试。
这一切都很好,我可以在我的所有对象上测试我的同步方法绝对没问题。但是,我实际上想测试的大多数复杂 API 通过调用委托上的方法异步返回结果 - 例如,对文件下载和更新系统的调用将立即返回,然后在文件完成下载时运行 -fileDownloadDidComplete: 方法.
我将如何将其作为单元测试进行测试?
似乎我想要 testDownload 函数,或者至少是测试框架“等待” fileDownloadDidComplete: 方法运行。
编辑:我现在切换到使用 XCode 内置 XCTest 系统,并发现Github 上的TVRSMonitor提供了一种非常简单的方法来使用信号量等待异步操作完成。
例如:
- (void)testLogin {
TRVSMonitor *monitor = [TRVSMonitor monitor];
__block NSString *theToken;
[[Server instance] loginWithUsername:@"foo" password:@"bar"
success:^(NSString *token) {
theToken = token;
[monitor signal];
}
failure:^(NSError *error) {
[monitor signal];
}];
[monitor wait];
XCTAssert(theToken, @"Getting token");
}