reactjs - 如何等到按钮的禁用状态在测试库中被更改?

标签 reactjs testing react-testing-library

我有一个 React 组件,在一开始就禁用了输入字段和按钮。如果用户向输入字段提供的输入通过 API 验证,则此按钮的状态(禁用)会更改,在输入字段中键入任何内容后将调用该 API。

我通过提供有效输入进行测试,但它需要等到 API 调用完成,所以基本上我想测试一下,如果提供有效输入,按钮是否在我的测试中重新启用。

我正在通过以下代码执行此操作:

userEvent.type(getByRole("textbox"), "HELLO");
await waitFor(() => expect(getByTestId("my-btn")).not.toBeDisabled());

但即使输入有效也无法正常工作

最佳答案

您可以将waitFor 超时增加为explained in the doc :

await waitFor(() => expect(getByTestId("my-btn")).not.toBeDisabled(), {
  timeout: 5000,
});

超过 5000 你可能还需要 increase jest timeout .

关于reactjs - 如何等到按钮的禁用状态在测试库中被更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66156991/

相关文章:

reactjs - react : download a file with Axios using a progress bar

node.js - npm runject 后无法使用 JSX

ruby-on-rails - Rails fixtures——如何设置外键?

reactjs - 如何使用 Jest 和 react 测试库在 react 中测试路线

reactjs - 使用 react-testing-library 运行 Jest 测试时出错

javascript - 使用 useEffect 发出 Jest Act 警告

node.js - 如何使用 Mongoose 删除子文档?

javascript - 使用 React、React Hooks 的私有(private)路由

javascript - 重构使用同一文件中的函数进行测试的函数的正确方法

unit-testing - Rx-Kotlin awaitTerminalEvent 永远不会 onComplete