Chcę utworzyć test integracji, który pokazuje, że określone działanie powoduje wyświetlenie kontrolera widoku modalnego. Scenorys jest skonfigurowany z 2 kontrolerami widoku, jednym z niestandardową klasą ViewController, z drugą z domyślną klasą UIViewController i tytułem "second". Segue jest skonfigurowany jako modalny z identyfikatorem "modalsegue". Uruchamianie aplikacji w symulatorze działa znakomicie, ale mam wiele problemów z określeniem poprawnego testu.Automatyczne testowanie kostek
ViewController.m:
@implementation ViewController
- (IBAction)handleActionByPerformingModalSegue {
[self performSegueWithIdentifier:@"modalsegue" sender:self];
}
@end
Test:
- (void)testActionCausesDisplayOfSecondViewController {
ViewController * vc =
[[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]
instantiateViewControllerWithIdentifier:@"ViewController"];
[vc handleActionByPerformingModalSegue];
STAssertEquals(vc.presentedViewController.title, @"second",
@"Title of presented view controller should be second but is %@",
vc.presentedViewController.title, nil);
}
Running wyniki testu w następujący wynik:
2013-06-23 17:38:44.164 SeguesRUs[15291:c07] Warning: Attempt to present <UIViewController: 0x7561370> on <ViewController: 0x7566590> whose view is not in the window hierarchy!
SeguesRUsTests.m:33: error: -[SeguesRUsTests testActionCausesDisplayOfSecondViewController] : '<00000000>' should be equal to '<9c210d07>': Title of presented view controller should be second but is (null)
Co robię źle? Czy istnieje prosty sposób na uniknięcie pierwszej wiadomości?
dobrze, powinieneś przejść do ram wyższym poziomie, który faktycznie UI Test a nie jakieś wewnętrzne metody - na przykład Apple UI Automation Franka-ogórka. – Sulthan