虽然循环条件没有重新评估

时间:2016-08-03 10:03:27

标签: ios swift xctest

我的视频播放器选择并播放给定的单元格。 我的目标是等到播放另一个视频以继续进行代码。

    while app.tables.elementBoundByIndex(0).cells.elementBoundByIndex(0).selected {}

不知何故,在while循环中,重新评估不会发生(当不再选择单元格时:cell.selected - > true),但是当放置断点并在调试器中手动检查时,则cell.selected - &gt ;假

1 个答案:

答案 0 :(得分:1)

while循环中对视图层次结构运行检查不会导致在每个循环之间更新视图层次结构。将根据视图层次结构的缓存版本进行检查,除非您与应用程序进行交互,否则不会更新该版本。

要确保为每项检查更新视图层次结构,您应使用expectationForPredicate:evaluatedWithObject:handler:waitForExpectationsWithTimeout:handler:

class MyTestCase: XCTestCase {
    let cell = app.tables.elementBoundByIndex(0).cells.elementBoundByIndex(0)
    let notSelectedPredicate = NSPredicate(format: "selected == false")
    expectationForPredicate(notSelectedPredicate, evaluatedWithObject: cell, handler: nil)
    waitForExpectationsWithTimeout(10, handler: nil)
    // proceed with the test...
}

这样,每次检查都会刷新要检查的视图层次结构。