Как вы пишете юнит-тесты первого респондента?
Я пытаюсь написать тест, чтобы подтвердить, что метод перемещает фокус на следующее текстовое поле. controller
является потомком UIViewController
. Но этот предварительный тест не пройден:
- (void)testFirstResponder
{
[controller view];
[[controller firstTextField] becomeFirstResponder];
STAssertTrue([[controller firstTextField] isFirstResponder], nil);
}
Первая строка вызывает загрузку вида, чтобы его выходы были на месте. Текстовые поля не равны нулю. Но тест никогда не проходит.
Я предполагаю, что becomeFirstResponder
не сразу устанавливает первого респондента, но назначает его на более позднее время. Так есть ли хороший способ написать модульный тест против него?
Подтверждение ответа из комментария в принятом ответе ... Пусть все пойдет на короткое время:
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate date]];
Я также обнаружил, что мне нужно создать окно UIWindow и перетащить в него представление контроллера представления, как указано в ответе с наибольшим количеством голосов.