Я тестирую некоторый код в ViewController (что некоторые элементы управления активны в зависимости от состояния определенных UISwitches и т. Д.), И решил пойти на Kiwi для это, поскольку мы используем его для некоторых других низкоуровневых логических тестов.Возможно ли создать экземпляр контроллера просмотра из раскадровки для тестирования киви?
Я ожидаю, чтобы запустить тесты, как это:
__block AViewController *aVC;
it(@"(tokenTextField) should be hidden if the token switch is set to off", ^{
lvC.useTokenSwitch.on = false;
[[theValue(aVC.tokenTextField.hidden) should] equal:theValue(YES)];
});
Моя проблема с инициализацией в AViewController. Если бы я сделал:
aVC = [[AViewController alloc] initWithNibName:@"aViewController" bundle:nil];
Я бы получить «AViewController» без какого-либо контроля инициализированных, так что я должен был бы инициализировать каждый из них вручную.
Так что я попытался получения AViewController делать это:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
aVC = [storyboard instantiateViewControllerWithIdentifier:@"AViewController"];
Однако это приводит к сообщению об ошибке:
NSInvalidArgumentException «Не удалось найти раскадровку под названием 'MainStoryboard' в расслоении NSBundle </Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk/Developer/usr/bin> (загружен) "поднято
Я включил MainStoryboard в свою целевую аудиторию, а также включил его в «Build Phases» -> «Copy Bundle Resources» и до сих пор ничего.
Так что мне интересно, возможно ли даже создать экземпляр ViewController из раскадровки в целевой тесте киви? (Как я нигде не видел никаких примеров).
Является ли мой подход неправильным, и я должен высмеивать ViewController?
Я пропустил что-то для включения в тестовую цель?
Я могу создать экземпляр раскадровки таким образом. На самом деле, я * не * включаю раскадровку в целевую аудиторию или фазу сборки Copy Bundle Resources, но я просто пробовал ее в обоих направлениях и в любом случае работает для меня. –
Спасибо, после того, как я обогнал, мне удалось создать его успешно. Однако теперь я застреваю тогда, я выполняю: [aVC выполнитьSelectorOnMainThread: @selector (loadView) withObject: nil waitUntilDone: YES]; Потому что это приводит к: NSInvalidArgumentException "- [__ NSCFType pointSize]: непризнанный селектор, отправленный в экземпляр 0x21f4690" – Katagelon