Как определить, выполнил ли ViewController переход в тестовом примере IOS KIF? - PullRequest
0 голосов
/ 10 января 2020

В тестовом примере IOS после нажатия кнопки я использую CFRunLoopRunInMode(mode, 3, false) для ожидания изменений пользовательского интерфейса (появится новый ViewController), а затем я касаюсь элемента в новом ViewController. Вопрос в том, что 2-й ViewController иногда не может появиться через 3 с, и я хочу определить точное время загрузки ViewController, тогда я продолжу немедленно запускать кейс.

Тестовый пример, как показано ниже:

[btn tap];
CFRunLoopRunInMode(mode, 3, false);
[btn2 tap];// if ViewController not loaded at this time then will crash there

Возможное решение:

  1. Опрос
    Используйте al oop, чтобы определить, загружен ли контроллер вида.
[btn tap];
fullfilled = NO;
while(!fullfilled){
    CFRunLoopRunInMode(mode, 0.3, false);
    fullfilled = determineControllerMethod("viewControllerName");
}
[btn2 tap];
XCTestExpectation
Его можно использовать только в тестовом примере, а я также хочу определить в обычном методе NSObject. XCTestExpectation может завершиться ошибкой только с таймаутом.

Есть ли другие хорошие методы, которые стоит попробовать? Большое спасибо, если вы можете разместить здесь несколько советов.

...