ios - XCTest 如何执行呈现模态视图的 segue 并测试 presentedViewController

标签 ios objective-c xcode unit-testing xctest

我试图测试一个会呈现 View Controller 的转场。但是,它总是失败。如何等待转场完成?请协助。

[self.viewController performSegueWithIdentifier:@"mySegueName" sender:self.viewController];
XCTAssertNotNil(self.viewController.presentedViewController, @"Failed to show modal view");

最佳答案

问题是您正试图在 UIViewController 上呈现,其 View 不在 UIWindow 层次结构中。这是我的解决方案:

- (void)testExample {

    //
    // Arrange
    // Storyboard
    //
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

    //
    // Arrange
    // View Controller
    //
    UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
    [UIApplication sharedApplication].keyWindow.rootViewController = viewController;

    //
    // Act
    //
    [viewController performSegueWithIdentifier:@"ModalSegue" sender:nil];

    //
    // Assert
    //
    XCTAssertNotNil(viewController.presentedViewController);

}

关于ios - XCTest 如何执行呈现模态视图的 segue 并测试 presentedViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20632140/

相关文章:

ios - 将 SDWebImage 用于带有可选图像 URL 的 UITableViewCell

ios - 官方 iOS 应用程序上的 OAuth2 是否必须使用 webview?

iphone - 实现 Mobclix 时出错

iphone - iOS 中的 DateTime 对象到 NSDate/NSString

xcode - 使用自定义构建 Shell 脚本加密 Cocoa 资源

ios - 如何将 .xcworkspace 添加到 .xcodeprodj

ios - 当应用程序已经在 iOS 上运行时,像本地通知一样推送通知?

ios - UITextView 和 float 自动更正窗口的位置

ios - 如何从终端或使用任何Monkeytalk命令打开iPhone应用程序?

ios - Swift/SpriteKit - ApplyImpluse 的速度是否以增量方式工作(每次都增加到以前的值)?