0

我们正在使用 detox 编写反应原生应用程序的 E2E 测试,其中我们有一个案例需要测试按钮点击后是否出现模式。

但是 detox 无法根据给定的testID想法识别模态,模态按预期打开。使用排毒在反应性中测试模态是否有不同的方法?

下面是模态 JSX

<Modal
    testID="loadingModal"
    animationType="none"
    transparent
    visible={loading}
    onRequestClose={() => {}}
  >
    <View style={styles.modalContainer}>
      <View style={styles.loginModal}>
        <ActivityIndicator
          animating
          size="large"
          color="#00e0ff"
        />
        <Text style={styles.login}>Logging in...</Text>
      </View>
    </View>
  </Modal>

下面是测试模态可见性的代码

it('should have welcome screen', async () => {      
    ....

    await element(by.text('CONTINUE')).tap();
    await waitFor(element(by.id('loadingModal'))).toBeVisible().withTimeout(5000);
    await expect(element(by.id('loadingModal'))).toBeVisible(); // this always fails    
});
4

1 回答 1

2

React Native 的 Modal 组件创建了一个视图控制器,用于管理原生级别的子视图的渲染。不幸的是,它不会传递 testID,所以我发现最好的方法是将模式的内容包装在 a<View>中,并将 testID 属性传递给该组件。在你的情况下,你可以这样做:

<Modal
    animationType="none"
    transparent
    visible={loading}
    onRequestClose={() => {}}
>
    <View 
        style={styles.modalContainer}
        testID="loadingModal"         // Just move the testID to this element
    >
        <View style={styles.loginModal}>
            <ActivityIndicator
                animating
                size="large"
                color="#00e0ff"
            />
        <Text style={styles.login}>Logging in...</Text>
    </View>
</View>

于 2018-05-02T17:03:40.583 回答