応答は非常に遅いですが、後世のために、これを行う別の方法は、状態ベースのアプローチを採用し、実際にテスト対象のビューコントローラーを実際のナビゲーションコントローラーに固定することです。次に、ビューコントローラを調べて、ナビゲーションコントローラの状態を調べることにより、ナビゲーションスタックで何が行われるかをテストできます。次に例を示します。
it(@"displays the station chooser when you tap the 'Choose station' button", ^{
// Given
LaunchViewController *launchViewController = [LaunchViewController newWithNearestStationLocator:nil];
[launchViewController view];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:launchViewController];
// When
[[launchViewController chooseStationBtn] sendActionsForControlEvents:UIControlEventTouchUpInside];
// Then
[[theValue(navController.viewControllers.count) should] equal:theValue(2)];
[[NSStringFromClass(navController.visibleViewController.class) should] equal:@"StationsViewController"];
});