2016-12-05 1 views
1

Я пишу свой XCUITest для своего приложения. Я объявляя предупреждение для того, чтобы использовать waitForExpectationsWithTimeout сделать мой тест асинхронный .... Однако это бросает ошибку Variable used within its own initial value об объявлении alert на линии 5.Swift Ошибка «Переменная, используемая в пределах собственного значения»

let timeout = NSTimeInterval() 
    let app = XCUIApplication() 

    let exists = NSPredicate(format: "exists == 1") 
    let alert = alert.buttons["OK"] 


    testCase.addUIInterruptionMonitorWithDescription("Enable Notifications") { (alert) -> Bool in 
      alert.buttons["OK"].tap() 
     return true 
    } 

    self.buttons["Enable notifications"].tap() 
    testCase.expectationForPredicate(exists, evaluatedWithObject: alert, handler: nil) 
    testCase.waitForExpectationsWithTimeout(timeout, handler: nil) 
    app.tap() 

Может кто-нибудь сказать мне, почему это бросая эту ошибку и что я могу сделать, чтобы исправить это. Заранее спасибо.

ответ

4

Это потому, что в вашей строке нет. 5, вы написали

let alert = alert.buttons["OK"] 

Предупреждение никогда не было объявлено перед этой строкой, поэтому вы не можете написать это.

Например, возьмем этот случай,

let a = a+5 

Теперь компилятор выбросит ту же ошибку, как она не знает значение «а», поскольку она не была объявлена ​​ранее.

+0

Хорошо, так как я должен объявить предупреждение раньше? –

+0

Я не знаком с Xcode Tests, просто ответил на ваш вопрос. Обнаружено это в Интернете после поиска бит - let alert = app.alerts.elementBoundByIndex (0) .buttons ["OK"] - попробуйте один раз – Aakash

+0

Если не полезно, попробуйте эту ссылку http://stackoverflow.com/questions/32148965/ xcode-7-ui-testing-how-to-reject-a-series-of-system-warn-in-code или ждать, когда кто-то знает об этом, чтобы ответить – Aakash

Смежные вопросы