#iphone #objective-c #unit-testing #interface-builder #nib
#iPhone #objective-c #модульное тестирование #interface-builder #nib
Вопрос:
Я пытаюсь выполнить модульное тестирование некоторого кода контроллера в приложении iPhone. Код, который я тестирую, основан на вызове self.NavigationController, который в моем тесте равен нулю. В реальном приложении контроллер навигации настраивается благодаря тому, что он является родительским для моего контроллера внутри файла nib. Я хотел бы иметь возможность просто установить навигационный контроллер на моем контроллере в моих модульных тестах, но NavigationController является свойством только для чтения. Есть ли способ программно настроить отношения родитель-потомок в моем тесте (точно так же, как это делает файл nib), чтобы метод NavigationController нашел его?
Ответ №1:
UIViewController *temp = [[UIViewController alloc]init];
UINavigationController *_temp = [[UINavigationController alloc]initWithRootViewController:temp];
Это то, что вы ищете?
Комментарии:
1. Возможно. Это все, что на самом деле делает Interface Builder? В документации упоминается поиск по «родительскому» или «предковому» контроллеру навигации. Если вы действительно откроете файл xib, вы увидите разметку, подобную этой:
<reference key="IBUIParentViewController" ref="1034742383"/>
, что заставляет меня думать, что на самом деле происходит что-то еще…