XCTests для SLComposeViewController

Я пытался написать блок-тесты с использованием XCTest для SLComposeViewController и не смог найти никакого решения до сих пор. Любое предложение с точки зрения подхода и кода было бы полезно.

Моя цель - протестировать приведенный ниже код с помощью XCTest

SLComposeViewController *tweetSheet = [SLComposeViewController
                                                   composeViewControllerForServiceType:SLServiceTypeTwitter];

            SLComposeViewControllerCompletionHandler __block completionHandler = ^(SLComposeViewControllerResult result)
            {

                [tweetSheet dismissViewControllerAnimated:YES completion:nil];

                switch(result)
                {

                    case SLComposeViewControllerResultCancelled:
                    {

                        [self showAlertWithTitle:nil
                                          andMsg:NSLocalizedString(@"Sharing failed", @"Workout summary text")];

                    }

                        break;

                    case SLComposeViewControllerResultDone:
                    {

                        [self showAlertWithTitle:NSLocalizedString(@"Success", @"Success")
                                          andMsg:NSLocalizedString(@"Message shared", @"Workout summary share text")];

                    }

                        break;

                }

            };

1 ответ

Если вы хотите выполнить асинхронный тест, вы создаете объект "ожидание", объект, который устанавливает ожидание того, что некоторая асинхронная задача будет выполнена в более поздний момент времени. Затем в своем блоке завершения асинхронных задач вы выполняете это ожидание. Наконец, вернувшись в основную очередь, после запуска асинхронной задачи вы ожидаете, что это ожидание будет выполнено.

Таким образом, объединяя все это, асинхронный тест будет выглядеть так:

- (void)testSomethingAsynchronous 
{
    XCTestExpectation *expectation = [self expectationWithDescription:@"some description"];

    [self doSomethingAsynchronousWithCompletionHandler:^{

        // do whatever tests you want

        // when all done, fulfill the expectation

        [expectation fulfill];
    }];

    [self waitForExpectationsWithTimeout:30.0 handler:nil];
}
Другие вопросы по тегам