Я начинаю работать с KIF и испытываю проблемы с тестированием моих асинхронно загруженных табличных представлений с моей текущей конфигурацией.
У меня есть домашний экран в моем приложении с кнопкой.Когда эта кнопка нажата, отображается модальный контроллер вида.
- (void)viewDidLoad
{
[super viewDidLoad];
// Setup accessibility
self.theTableView.accessibilityLabel = @"My List";
// Register for notifications
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(objectsLoadedNotification:) name:kNotificationObjectsLoaded object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(objectsFailedToLoadNotification:) name:kNotificationObjectsFailedToLoad object:nil];
// Start loading new data
[[MyListObjectManager sharedInstance] requestObjects];
}
Теперь я настроил тест в KIF, который выглядит следующим образом:
+ (id)scenarioToSelecList
{
KIFTestScenario *scenario = [KIFTestScenario scenarioWithDescription:@"Test that a user can select an item from my list."];
[scenario addStep:[KIFTestStep stepToTapViewWithAccessibilityLabel:@"List"]];
[scenario addStep:[KIFTestStep stepToWaitForNotificationName:kNotificationObjectsLoaded object:nil]];
[scenario addStep:[KIFTestStep stepToTapRowInTableViewWithAccessibilityLabel:@"My List" atIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]];
}
Когда я запускаю тест, KIF никогда не видит уведомление о загруженных объектах.
При отладке я заменил вызов [objectManager requestObjects] в моем методе viewDidLoad на асинхронный вызов для запроса объектов через три секунды:
[[MyListObjectManager sharedInstance] performSelector:@selector(requestObjects) withObject:nil afterDelay:3.0];
Когда я это делаю, я вижу следующее в KIFвыходные данные:
PASS (0.90s): Tap view with accessibility label "Find Books"
PASS (3.02s): Wait for notification "notificationObjectsLoaded"
, что заставляет меня поверить, что первоначальная проблема заключается в том, что ожидаемое мной уведомление запускается до того, как завершится выполнение первого шага.
Итак, возникает вопрос: почему первый шаг занимает 0,9 секунды?Ожидание завершения модальной анимации, прежде чем она вернется с шага?В этом случае запрос на загрузку объектов выполняется быстрее, чем анимация.
Как с этим обращаться с KIF?Или есть другой подход к загрузке асинхронных данных для моего табличного представления, который был бы более подходящим?