Я хотел бы написать тест следующим образом:
Когда мое приложение переходит на определенную панель, оно должно запрашивать разрешение на использование камеры.
Я хочу проверить, появляется ли панель. Для этого я использую встроенную структуру XC UITest. Согласно тому, что я нашел в Google и здесь, похоже, я должен сделать следующее:
let dialogAppearedExpectation = expectationWithDescription("Camera Permission Dialog Appears")
addUIInterruptionMonitorWithDescription("Camera Permission Alert") { (alert) -> Bool in
dialogAppearedExpectation.fulfill()
return true
}
goToCameraPage()
waitForExpectationsWithTimeout(10) { (error: NSError?) -> Void in
print("Error: \(error?.localizedDescription)")
}
Тест начался с провала, отлично. Я реализовал goToCameraPage, который правильно вызывает появление всплывающего окна «дать разрешение». Однако я ожидаю, что это вызовет монитор прерывания. Однако такое прерывание не перехватывается, и выполнение не происходит.
Я где-то читал, что вы должны сделать app.tap()
после появления диалога. Однако, когда я это делаю, он нажимает кнопку «разрешить». Диалоговое окно исчезает, а прерывание по-прежнему не обрабатывается.
Есть ли способ, которым диалоги разрешений не считаются «предупреждениями» или не могут быть обработаны? Я даже вошел и заменил бит прерывания на вещь, которая просто смотрит на app.alerts
, но оказывается пустой, даже когда я смотрю прямо на всплывающее окно в симуляторе.
Спасибо! Я использую Xcode7.2, симулятор iOS 9.2 для iPhone 6s.