关键步骤
- 创建一个 XCTestCase 子类来编写测试。
- 在测试方法中,使用
XCTestExpectation
来表示异步操作的期望结果。
- 发起网络请求。
- 请求完成后,根据结果调用
fulfill
方法满足期望,或者使用 XCTFail
标记测试失败。
- 使用
wait(for:timeout:)
等待期望被满足,设置合适的超时时间。
代码示例
#import <XCTest/XCTest.h>
#import <AFNetworking/AFNetworking.h>
@interface NetworkRequestTests : XCTestCase
@end
@implementation NetworkRequestTests
- (void)testAsyncNetworkRequest {
XCTestExpectation *expectation = [self expectationWithDescription:@"Network request should complete"];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:@"https://example.com/api/data" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
// 验证返回的数据是否符合预期
if ([responseObject isKindOfClass:[NSDictionary class]]) {
// 这里假设期望返回一个字典,根据实际情况调整验证逻辑
[expectation fulfill];
} else {
XCTFail(@"Response data is not in expected format");
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
XCTFail(@"Network request failed with error: %@", error);
[expectation fulfill];
}];
[self waitForExpectationsWithTimeout:10 handler:^(NSError * _Nullable error) {
if (error) {
NSLog(@"Timeout error: %@", error);
}
}];
}
@end