XLCests用于SLComposeViewController

时间:2014-11-13 05:15:35

标签: ios iphone xctest 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 个答案:

答案 0 :(得分:0)

如果要执行异步测试,则需要创建一个“期望”对象,该对象设置一个异常任务将在稍后完成的期望。然后在异步任务完成块中,您满足了这个期望。最后,回到主队列中,在启动异步任务后,等待满足该期望。

因此,将所有这些放在一起,异步测试看起来像

- (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];
}