布局被覆盖时 Detox 测试失败

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

当测试单击按钮时,我在 Detox 中收到以下错误,单击有效,但在组件由于状态更改而重新呈现后,测试奇怪地想再次单击按钮,但由于按钮不在查看,测试失败。

测试失败:等待 [com.wix.detox.reactnative.idlingresources.AnimatedModuleIdlingResource] 变得空闲超时

我的测试脚本:

await element(by.id("post-1-cm")).tap();

await waitFor(element(by.id("comment-error")))
  .not.toExist()
  .withTimeout(5000);

按钮组件:

<AppButton
          onPress={() => toggleComments(true)}
          disabled={disabled || submitting}
          inverted
          testID={`${testID}-cm`}
          buttonStyles={styles.button}>

单击按钮时渲染的组件代码,toggleComments 将 showComments 状态更改为 True:

  {showComments && (
    <CommentsModal
      reloadPosts={props.reload}
      visible={showComments}
      blockUser={blockUser}
      close={() => toggleComments(false)}
    />
  )}
javascript reactjs react-native jestjs detox
1个回答
0
投票

排毒

android/espressoapi/UIDevice.js
确实有
waitForIdle(element)
功能。

但是如果这不适用于您的用例,您可以尝试将测试脚本包装在

InteractionManager
:

InteractionManager.runAfterInteractions(() => {
  // ...long-running synchronous task...
  element(by.id("post-1-cm")).tap();
});

这样,您可以检查这是否足以让您的

AnimatedModuleIdlingResource
闲置 first,然后再进行休息。

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