我正在为应用程序编写单元测试,并想检查是否在特定场景中呈现了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"); }
如何检查UIAlertController是否已显示在当前视图之上?
解决方法
“XCTest并不意味着用于测试UI组件.”不是真的准确.我正在使用XCTest进行几乎所有的UI测试,它运行得很好.正确答案应为“嘲弄”.
我会使用Ocmock来模拟测试的视图控制器并“验证”使用警报控制器调用方法presentViewController …这是一个简洁的解决方案,工作得很好. (你甚至可以忽略警报控制器传递给这个方法,只测试视图控制器已经传递方法presentViewController …)