检查UIAlertController是否在XCTest案例中呈现

JAL*_*JAL 7 uiviewcontroller ios xctest uialertcontroller

我正在为一个应用程序编写单元测试,并想检查是否UIAlertController在特定场景中呈现了一个.

-(void)testBadLogin {
    // enter username and password in UITextFields
    self.viewController.usernameField.text = @"test@test.com";
    self.viewController.passwordField.text = @"incorrect_pass";
    [loginButton sendActionsForControlEvents: UIControlEventTouchUpInside];

    // this isn't right
    XCTAssertNotNil([self.viewController alertController], @"alertController should appear"); 
}
Run Code Online (Sandbox Code Playgroud)

如何检查UIAlertController当前视图上是否显示了?

Abd*_*tou 5

"XCTest并不意味着用于测试UI组件." 不是真的准确.我正在使用XCTest进行几乎所有的UI测试,它运行得很好.正确答案应为"嘲弄".

我会使用OCMock来模拟测试的视图控制器,并"验证"使用警报控制器调用方法presentViewController ... 这是一个简洁的解决方案,工作得很好.(你甚至可以忽略警报控制器传递给这个方法,只是测试视图控制器已经传递了方法presentViewController ...)