开玩笑的测试库 - 模拟拒绝承诺在 useAsync() 中没有按预期工作

问题描述

我在我的函数组件中使用 useAsync() 钩子。该组件在上一步点击next按钮后在material-ui stepper的最后一步渲染,是一个单独的组件。

const memberStatus = useAsync(async () => {
    await addMembersToTeam(props.projectName,props.teamName,props.members);
  },[]);

以下是我的测试片段:

const promise = new Promise<any>((_resolve,reject) => {
      reject(new Error('Failed'))
    })
    mocked(mockAddMembersToTeam).mockRejectedValue(promise)

    const nextButton = await rendered.findByRole('button',{ name: /next/ });
    expect(nextButton).toBeEnabled();
    userEvent.click(nextButton);

await waitFor(() => { expect(mockAddMembersToTeam).toHaveBeenCalledOnce() })

const errorAlert = await waitFor(() =>
      rendered.getByTestId('membeRSStatusErrorMsg'),);

    const expecteDalert = 'Issue Adding Members.';
    expect(errorAlert.textContent).toBe(expecteDalert);

测试失败,原因如下:

ReferenceError: You are trying to access a property or method of the Jest environment after it has been torn down.

 Failed
      281 |     const promise = new Promise<any>((_resolve,reject) => {
    > 282 |       reject(new Error('Failed'))
          |              ^
      283 |     })

感谢您对此问题的任何见解。谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)