Модульное тестирование UIViewController

#ios #objective-c #unit-testing #uiviewcontroller

#iOS #objective-c #модульное тестирование #uiviewcontroller

Вопрос:

У меня есть очень простой UIViewController с UITextField , который принимает некоторые данные и кнопку. Если данные неверны, то при нажатии кнопки отображается UIAlertView .

Используя OCMock , я написал модульный тест, который высмеивает UIAlertView и подтверждает, что вид предупреждения отображается, когда имя недопустимо. Тоже простые.

Проблема в том, что я не могу получить какой-либо текст в UITextField из модульного теста. В приведенном ниже фрагменте кода нет ошибок компиляции или времени выполнения (поэтому создается экземпляр контроллера представления), но вывод всегда «Data is (null)». Есть какие-нибудь идеи? (Я уверен, что это должно быть что-то простое.)

 ViewController *controller = [[UIStoryboard storyboardWithName:@"Main_iPad" bundle:nil]
                                      instantiateViewControllerWithIdentifier:@"MainViewController"];
    controller.data.text = @"123";
    NSLog(@"nnData is = %@nn", controller.data.text);
    // Outputs: Data is (null)
  

Комментарии:

1. Просто чтобы быть уверенным.. контроллер не равен нулю, и данные также не равны нулю, а данные представляют собой текстовое поле?

2. Да, контроллер не равен нулю (хороший вызов, я добавил еще одно заявление журнала, чтобы подтвердить это). данные представляют собой UITextField.

3. Ах, контроллер.данные равны нулю. Хорошо замечено.

4. контроллер.данные, это текстовое поле может быть неправильно связано, если оно выполняется через xib.

5. Решение состоит в том, чтобы загрузить представление после создания экземпляра контроллера [controller loadView].