问题描述
我有一个在props中接收值“ openDrawer”(布尔)和函数“ toggleDrawerHandler”的组件,函数“ toggleDrawerHandler”更改了“ openDrawer” prop的值。 我想通过模拟一个触发该功能的div来测试它,并检查'openDrawer'的值更改时组件是否更改。
组件
const NavigationMobile = (props) => {
const { openDrawer,toggleDrawerHandler } = props;
let navClass = ["Nav-Mobile"];
if (!openDrawer) navClass.push("Close");
return (
<div className="Mobile">
<div className="Menubar" onClick={toggleDrawerHandler}>
{openDrawer ? <FaTimes size="1.5rem" /> : <FaBars size="1.5rem" />}
</div>
<nav className={navClass.join(" ")} onClick={toggleDrawerHandler}>
<Navigation />
</nav>
</div>
);
};
发送这些道具的组件
const Header = (props) => {
const [openDrawer,setopenDrawer] = useState(false);
const toggleDrawerHandler = () => {
setopenDrawer((prevstate) => !prevstate);
};
return (
<header className="Header">
<NavigationMobile openDrawer={openDrawer} toggleDrawerHandler={toggleDrawerHandler} />
</header>
);
};
我的测试,但不起作用
it("changes prop openDrawer when click",() => {
const wrapper = shallow(<NavigationMobile />);
expect(wrapper.find("FaBars")).toHaveLength(1);
expect(wrapper.find("nav").hasClass("Nav-Mobile")).toBeTruthy();
wrapper.find(".Menubar").simulate("click",true); // doesnt work
expect(wrapper.find("FaTimes")).toHaveLength(1);
expect(wrapper.find("nav").hasClass("Nav-Mobile Close")).toBeTruthy();
});
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)