使用AFNetworking 2.0下面的代碼是有效的,通過互聯網來獲取數據:如何同步使用AFNetworking 2.0庫?
NSString *URLPath = @"http://www.raywenderlich.com/downloads/weather_sample/weather.php?format=json";
NSDictionary *parameters = nil;
[[AFHTTPRequestOperationManager manager] GET:URLPath parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"success: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"failure: %@", error);
}];
但我想在單元測試同步測試這些請求。
// This code would be blocked.
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
NSString *URLPath = @"http://www.raywenderlich.com/downloads/weather_sample/weather.php?format=json";
NSDictionary *parameters = nil;
[[AFHTTPRequestOperationManager manager] GET:URLPath parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"success: %@", responseObject);
dispatch_semaphore_signal(sema);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"failure: %@", error);
dispatch_semaphore_signal(sema);
}];
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
dispatch_release_ARC_compatible(sema);
我如何可以獲取使用AFNetworking 2.0庫同步數據(測試中Kiwi這些代碼):但是,如果使用這樣當GCD信號受阻?
爲什麼你不能使用信號燈? –
首先,思考你正在測試的代碼 - 你真的想爲AFNetworking編寫單元測試嗎?他們已經有自己的。那麼,你試圖用這個來測試呢? –
我想測試其他提供的Web API。 –