Некоторое время назад начал использовать библиотеку AFNetworking для загрузки данных с S3. Загрузку выполняю примерно следующим кодом:
AFHTTPRequestOperation* loadOperation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[loadOperation setCompletionBlockWithSuccess:...]
...
В приложении все прекрасно работает, а вот в тесте success block не отрабатывал. Решение нашлось здесь и здесь. Если коротко, проблема в том, что блоки в AFNetworking вызываются через dispatch_async - они ставятся в FIFO-очередь, но в тестах очередь :) до их выполнения може не дойти. Решилась проблема добавлением кода в текст:
NSDate* loopUntil = [NSDate dateWithTimeIntervalSinceNow:2];
while ([loopUntil timeIntervalSinceNow] > 0) {
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:loopUntil];
}
Тесты заработали как надо.
Немає коментарів:
Дописати коментар