我已经将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");
}