【发布时间】:2019-05-19 12:58:49
【问题描述】:
我一直在试图弄清楚如何使用 OCMock 为这种方法编写单元测试。有人可以帮我吗?
- (void)executeRequest:(NSURLRequest *)request withCompletionHandler:(void (^)(id responseData, NSError *error))completionHandler
{
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error)
{
NSLog(@"Network error occurred: %@", [error localizedDescription]);
dispatch_async(dispatch_get_main_queue(), ^(void) { completionHandler(nil, error);
});
return;
}
if ([response isKindOfClass:NSHTTPURLResponse.class])
{
NSInteger statusCode = [(NSHTTPURLResponse *)response statusCode];
if (statusCode != 200)
{
NSLog(@"Network error occurred. Status code: %ld", (long)statusCode);
return;
}
}
completionHandler(data, nil);
}];
[dataTask resume];
}
【问题讨论】:
-
也许将测试(断言方法)添加到完成处理程序?例如,设置测试以使请求失败,然后测试是否使用 (nil, error) 调用完成处理程序
-
也许你可以写一些代码示例?
标签: ios objective-c unit-testing nsurlsession nsurlrequest