Я установил Google Toolbox для Mac в Xcode и выполнил инструкции по настройке тестирования устройства, найденного .
Все отлично работает, и я могу полностью проверить свои синхронные методы на всех моих объектах. Однако большинство сложных API-интерфейсов я действительно хочу проверить результаты возврата асинхронно, вызвав метод на делетете - например, вызов системы загрузки и обновления файлов немедленно вернется, а затем запустит метод -fileDownloadDidComplete: когда файл завершит загрузку.
Как я могу проверить это как unit test?
Кажется, что я хотел бы использовать функцию testDownload или, по крайней мере, тестовую среду для ожидания метода fileDownloadDidComplete:
EDIT: теперь я переключился на использование встроенной XCTest-системы XCode и обнаружил, что TVRSMonitor в Github обеспечивает простой способ использовать семафоры, чтобы дождаться завершения асинхронных операций.
Например:
- (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");
}