首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React测试库自定义呈现函数和异步等待

React测试库自定义呈现函数和异步等待
EN

Stack Overflow用户
提问于 2022-03-11 16:07:58
回答 1查看 700关注 0票数 1

我的组件有以下自定义呈现函数。

它有CreateEdit两种模式。

Create是同步的,Edit是异步的。

其职能如下:

代码语言:javascript
复制
    const renderComponent = async (
      scheduleId = "",
      dialogMode = DialogMode.CREATE,
      cohorts = MOCK_COHORT_LIST,
      jobs = JOB_LIST,
      availableForSchedule = domain === Domain.COHORT ? jobs : cohorts,
    ) => {
      render(
        <AddEditScheduleDialog
          cohorts={cohorts}
          jobs={jobs}
          availableForSchedule={availableForSchedule}
          scheduleToEdit={scheduleId}
          handleToggleDialog={mockToggleDialog}
          isDialogVisible={true}
          domain={domain}
        />,
        {
          wrapper: queryWrapper,
        },
      );

      if (dialogMode === DialogMode.EDIT) {
        expect(screen.getByRole("progressbar")).toBeInTheDocument();
      }

      await waitFor(() =>
        expect(screen.queryByRole("progressbar")).not.toBeInTheDocument(),
      );

      return {
        header: screen.getByRole("heading", {
          level: 1,
          name: `schedules:addEditDialog.${domain}.${dialogMode}.title`,
        }),
        name: {
          field: screen.getByTestId(`${domain}-name-field`),
          button: within(screen.getByTestId(`${domain}-name-field`)).getByRole(
            "button",
          ),
        },
        frequency: {
          field: screen.getByTestId("schedule-frequency-field"),
          input: within(
            screen.getByTestId("schedule-frequency-field"),
          ).getByRole("textbox"),
          helperText: `schedules:addEditDialog.form.frequency.helperText`,
        },
      };
    };

有时,在屏幕上查找元素时,我会遇到间歇性问题。这是因为函数在等待progressbar之前返回吗?

在返回所需的屏幕元素之前,是否有一种方法可以等待呈现所有内容?

EN

回答 1

Stack Overflow用户

发布于 2022-03-17 23:34:51

如果编辑模式导致进度条异步显示,则应使用findByRole等。

代码语言:javascript
复制
if (dialogMode === DialogMode.EDIT) {
 expect(await screen.findByRole("progressbar")).toBeInTheDocument());
}

这是因为find*查询使用waitFor“在引擎盖下”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71441377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档