首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何测试是否单击了react组件

如何测试是否单击了react组件
EN

Stack Overflow用户
提问于 2022-01-13 21:03:25
回答 2查看 416关注 0票数 0

我有一个名为HelpButton的react组件,它如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import helpLogo from '../Resources/helplogo.svg';

function HelpButton(props) {

    const [isOpen, setisOpen] = React.useState(false)

    function toggle() {
        setisOpen(prevIsOpen => !isOpen)
        if (isOpen)
            console.log("Help Open")
        else
            console.log("Help Closed")
    }

    return (
        <div className="helpIconBgrnd" onClick={toggle} data-testid="helpIconBgrnd">
            <img className="help-icon" src={helpLogo} alt='help-icon' />
        </div>
    )
}

export default HelpButton

我想测试这个组件是否被点击了,而且我知道有一种使用expect(mockCallbackFunction).toHaveBeenCalledTimes(number)的方法。但问题是,我没有将切换函数作为支柱传递给HelpButton,而是在HelpButton组件中声明它,因此我认为不能使用这种方法。如何测试是否单击了HelpButton组件?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-14 01:53:12

那么,您想签入“某些组件”,HelpButton组件是否已打开?

试试这个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { useState } from 'react';

const Parent = () => {
  const [isOpen, setisOpen] = useState(false);

  //now you know if the component is open, you can do whatever you need with it

  const handleToggle = () => setisOpen(prevState => !prevState);

  return (
    <HelpButton onToggle={handleToggle}/>
  )
}  

export default Parent;

const HelpButton ({ onToggle }) {
  return (
    <div className="helpIconBgrnd" onClick={onToggle} data-testid="helpIconBgrnd">
      <img className="help-icon" src={helpLogo} alt='help-icon' />
    </div>
  );
}

export default HelpButton;
票数 1
EN

Stack Overflow用户

发布于 2022-01-13 21:16:22

试试这个。在更改isOpen属性时,它将重新呈现。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
useEffect(()=>{
toggle();
},[isOpen]);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70706199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文