当前位置: 首页 > 知识库问答 >
问题:

检查按钮是否在反应测试库中被禁用

令狐运珧
2023-03-14

我有一个 React 组件,它生成一个按钮,其内容包含

function Click(props) {
    return (
        <button disable={props.disable}>
            <span>Click me</span>
        </button>
    );
}

我想通过使用反应测试库摩卡来测试这个组件的逻辑。

我目前遇到的问题是getByText(“Click me”)选择器返回

  1. 使用data test id

你能建议一个更好的方法吗?


共有3个答案

倪棋
2023-03-14

对于正在寻找按钮没有被禁用的测试的人。

import { render } from '@testing-library/react';

const { getByText } = render(Click);
expect(getByText(/Click me/i).getAttribute("disabled")).toBe(null)
赵兴朝
2023-03-14

您可以使用toBeDisabled()@testing-library/jest-dom,它是一个自定义jest匹配器,用于测试dom的状态:

https://github.com/testing-library/jest-dom

例:

html prettyprint-override"><button>Submit</button>
expect(getByText(/submit/i)).toBeDisabled()
冯星阑
2023-03-14

如果按钮被禁用,则断言

您可以使用toHaveAttribute和最接近的来测试它。

import { render } from '@testing-library/react';

const { getByText } = render(Click);
expect(getByText(/Click me/i).closest('button')).toHaveAttribute('disabled');

toBeDisabled

expect(getByText(/Click me/i).closest('button')).toBeDisabled();

启用按钮时断言

要检查按钮是否启用,请使用not,如下所示

expect(getByText(/Click me/i).closest('button')).not.toBeDisabled();

 类似资料:
  • 问题内容: PHP中是否可以使用任何函数来检测该函数是否可用? 问题答案: 编辑:根据Ziagl的评论修复了爆炸。

  • 问题内容: 我正在使用react native导航(react- navigation)StackNavigator。它从应用程序整个生命周期的“登录”页面开始。我不想使用返回选项,返回“登录”屏幕。有谁知道登录屏幕后如何将其隐藏在屏幕上?顺便说一句,我也使用以下命令将其隐藏在登录屏幕中: 问题答案: 1)要使后退按钮在react-navigation v2或更高版本中消失: 2)如果您要清理导航

  • 问题内容: 有没有一种方法可以检测JavaScript中的鼠标按钮当前是否处于按下状态? 我知道“ mousedown”事件,但这不是我所需要的。按下鼠标按钮后的一段时间,我希望能够检测它是否仍被按下。 这可能吗? 问题答案: 关于Pax的解决方案:如果用户有意或无意地单击了多个按钮,则该按钮将不起作用。不要问我我怎么知道:-(。 正确的代码应如下所示: 通过这样的测试: 如果您想知道按下了什么按

  • 我正在用MCP(Mod Coder Pack)制作我自己的Minecraft客户端。 但我不知道如何才能检测例如在更新方法中,如果鼠标按钮被按下,以及哪个。 Im使用MCP 9.10(Minecraft 1.8) 我在谷歌也在这个平台上搜索,但我什么也没找到。 我希望你们中有人能帮助我。

  • 我不知道如何使Tkinter变灰。 我试着使用,但它不起作用,我得到一个错误,说 _特金特。TclError:错误选项“-enable”:必须是-column、-columnspan、-in、-ipadx、-ipady、-padx、-pady、-row、-rowspan或-sticky 如何临时禁用?

  • 我正在进行分页。我们在应用程序中有两个按钮和。我在每页上显示5条记录,如果当前数组中没有数据(数组数据来自API),我想禁用Next Button。我是ReactJS的初学者,请帮助我如何禁用Next按钮。 密码