Swift UI 测试:当我进入新视图时,静态文本没有更新

问题描述 投票:0回答:1

我有一个简单的应用程序,有两个视图,一个主页和一个主页。我在主页上有一个按钮,可以通过如下逻辑进入主页:

.fullScreenCover(isPresented: $showingMain) {
    MainView()
}

我正在编写一个基本的 Swift UI 测试,以按主页上的“开始”按钮,然后检查我是否在第二页(视图)上。当我运行测试时,在模拟器中我看到按钮被按下并且主视图出现。

但是,如果我尝试检查某个对象(例如在静态文本中),它只会在第一个视图上显示该对象。就好像状态没有以某种方式更新。我尝试等待几秒钟,但没有帮助。

有人有什么想法吗?

func testExample() throws {
    let app = XCUIApplication()
    app.launch()
    app.buttons["Start"].tap()
    XCTAssert(XCUIApplication().staticTexts["Back to home page"].waitForExistence(timeout: 2)) // FAILS
    
    for staticText in  app.staticTexts.allElementsBoundByIndex{
        print(staticText.label) // SHOWS TEXT FROM FIRST PAGE
    }
}
swift swiftui xcode-ui-testing
1个回答
0
投票

像往常一样,我在发帖后不久就解决了问题。我会在这里输入信息,以防万一有人遇到同样的问题。

我的主要问题是我使用的是 staticTexts[] 而不是buttons[]。改变它就解决了。然而,我的困惑是因为我在 staticText 中看到第一个视图中的字符串。

似乎如果您通过 fullScreenCover 进行转换,它仍然会包含第一个视图中的 staticText 项目,因为我猜它在技术上仍然在屏幕上。

© www.soinside.com 2019 - 2024. All rights reserved.