我正在尝试使用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;
}
};
答案 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];
}