Очень поздний ответ, но для потомков я только что обнаружил, что альтернативный способ сделать это - использовать подход, основанный на состоянии, и фактически вставить тестируемый контроллер представления в настоящий контроллер навигации. Затем вы можете нажать на свой контроллер представления и проверить, что он делает со стеком навигации, проверив состояние контроллера навигации. Вот пример:
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"];
});