【发布时间】:2022-12-14 03:18:49
【问题描述】:
我正在尝试测试 useState 功能,该功能在调用 useEffect 时也会更新。
我要测试的是在初始阶段 useState 值为 false,然后它会在单击事件时发生变化。
请查看我在下面尝试的代码:
it("should have initial state false", async () => {
const setStateMock = jest.fn();
const useSateMock = (useState) => [useState, setStateMock];
jest.spyOn(React, "useState").mockImplementation(useSateMock);
render(<Dropdown placeholder="placeholder name" options={testOptions} />, { wrapper: BrowserRouter });
const dropdwonBtn = screen.getByTestId("dropdownBtn");
fireEvent.click(dropdwonBtn);
expect(setStateMock).toBeFalsy();
});
我的下拉组件的代码;
const [showDropdown, setShowDropdown] = useState(false);
useEffect(() => {
const handler = () => setShowDropdown(false);
window.addEventListener("click", handler);
return () => {
window.removeEventListener("click", handler);
};
}, [""]);
const handleDropdownClick = (e) => {
e.stopPropagation();
setShowDropdown(!showDropdown);
};
我得到的错误
【问题讨论】:
标签: reactjs unit-testing jestjs react-testing-library react-testing