Как написать модульный тест асинхронного метода без завершения блока в Obj C

У меня есть метод, который вызывает API внутри. Этот метод не имеет обработчика завершения.

-(void) methodToBeTested{
    [self callAPIWithCompletionHandler:^(NSArray *data,NSError *error)
     {
         //Here I get the response and sets the models.
     }];
}

Теперь мне нужно проверить метод "methodToBeTested" на основе моделей, установленных после вызова API.

Какие-либо предложения?

1 ответ

Решение

Пример:

XCTestExpectation *documentOpenExpectation = [self expectationWithDescription:@"document open"];

    NSURL *URL = [[NSBundle bundleForClass:[self class]]
                              URLForResource:@"TestDocument" withExtension:@"mydoc"];
    UIDocument *doc = [[UIDocument alloc] initWithFileURL:URL];
    [doc openWithCompletionHandler:^(BOOL success) {
        XCTAssert(success);
        [documentOpenExpectation fulfill];
    }];

    [self waitForExpectationsWithTimeout:1 handler:^(NSError *error) {
        [doc closeWithCompletionHandler:nil];
    }];
}

Посмотрите на Написание тестов асинхронных операций в документации по тестированию с XCode. https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/04-writing_tests.html

Другие вопросы по тегам