如何测试改变其他道具Jest酶的道具功能

时间:2020-08-12 15:03:14

标签: javascript reactjs jestjs enzyme

我有一个在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();
  });

0 个答案:

没有答案
相关问题