Модульный тест iOS: Как установить / обновить / проверить firstResponder?

Как вы пишете модульные тесты для первого респондента?

Я пытаюсь написать тест, чтобы подтвердить, что метод перемещает фокус на следующее текстовое поле. контроллер является потомком UIViewController . Но этот исследовательский тест не проходит:

- (void)testFirstResponder
{
    [controller view];
    [[controller firstTextField] becomeFirstResponder];

    STAssertTrue([[controller firstTextField] isFirstResponder], nil);
}

Первая строка вызывает загрузку представления, так что его выходы находятся на своих местах. Текстовые поля не равны нулю. Но тест никогда не проходит.

Я предполагаю, что beginFirstResponder не сразу устанавливает первого респондента, а планирует его на потом. Так есть ли хороший способ написать модульный тест против этого?

Вытягивание ответа из комментария в принятом ответе… Дайте ему поработать ненадолго:

[[NSRunLoop currentRunLoop] runUntilDate:[NSDate date]];

Я также обнаружил, что мне нужно создать UIWindow и поместите в него представление контроллера представления, как указано в ответе, получившем наибольшее количество голосов.

17
задан Jon Reid 6 September 2018 в 19:39
поделиться