2016-08-31 79 views
0

我正在使用Xcode UI測試程序測試應用程序。該應用的每個頁面都有一些標題文字。當測試訪問一個頁面時,我想使用XCTAssertEqual來測試標題文本。在反應本機的Xcode UI測試中使用XCTAssertEqual

的反應本地的頁面看起來像這樣

<View style={[AppStyles.appContainer, AppStyles.container]}> 
    <NavigationBar 
     title={<NavbarTitle title= {this.state.title} />} 
     statusBar={{style: 'light-content', hidden: false}} 
     style={AppStyles.navbar} 
     tintColor={AppConfig.primaryColor} 
     leftButton={leftButton} /> 
    <route.component navigator={navigator} route={route} {...route.passProps} onNavigationStateChange={this.onNavigationStateChange} /> 
    </View> 

,爲NavBarTitle組件的代碼是

var NavbarTitle = React.createClass({ 
    render: function() { 
    return (
     <Text style={[AppStyles.baseText, AppStyles.strong, AppStyles.navbarTitle]}>{this.props.title}</Text> 
    ); 
    } 
}); 

我還想寫斷言爲這樣的事情

XCTAssertEqual(NavbarTitle.text, 'Sign In') 

如何使用XCTAssertEqual找到NavbarTitle.text?

回答

0

這樣做的一種方法是隻查找標題文本,而不是標題元素。下面的代碼等待文本出現,然後聲明它確實存在。

let exists = NSPredicate(format: "exists == true") 
    let signIn = app.staticTexts[" Sign In"] 
    expectationForPredicate(exists, evaluatedWithObject: signIn, handler: nil) 
    waitForExpectationsWithTimeout(15, handler: nil) 
    XCTAssert(signIn.exists) 

這可能對它們恰巧有「登錄」頁面上顯示的其他頁面假陽性,所以最好將確定準確的元素。