У меня есть следующий код, который я хочу создать для модульного теста. Я хочу, чтобы проверить, если self.response не нольXcode - блок тестирует сетевой вызов
- (void)downloadJson:(NSURL *)url {
// Create a download task.
NSURLSessionDataTask *task = [[NSURLSession sharedSession]
dataTaskWithURL:url
completionHandler:^(NSData *data, NSURLResponse *response,
NSError *error) {
if (!error) {
NSError *JSONError = nil;
NSDictionary *dictionary =
[NSJSONSerialization JSONObjectWithData:data
options:0
error:&JSONError];
if (JSONError) {
NSLog(@"Serialization error: %@", JSONError.localizedDescription);
} else {
NSLog(@"Response: %@", dictionary);
self.response = dictionary;
}
} else {
NSLog(@"Error: %@", error.localizedDescription);
}
}];
// Start the task.
[task resume];
}
то, что я до сих пор
- (void)testDownloadJson {
XCTestExpectation *expectation =
[self expectationWithDescription:@"HTTP request"];
[self.vc
downloadJson:[NSURL URLWithString:@"a json file"]];
[self waitForExpectationsWithTimeout:5
handler:^(NSError *error) {
// handler is called on _either_ success or
// failure
if (error != nil) {
XCTFail(@"timeout error: %@", error);
} else {
XCTAssertNotNil(
self.vc.response,
@"downloadJson failed to get data");
}
}];
}
Но, конечно, это не правильно. Интересно, может ли кто-нибудь помочь мне понять, как написать этот тест.
Благодаря
сделано. Еще раз спасибо. – user2812463