2016-08-31 32 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) 

这可能对它们恰巧有“登录”页面上显示的其他页面假阳性,所以最好将确定准确的元素。