【发布时间】:2019-12-16 19:24:36
【问题描述】:
我有一个弹出窗口,我想测试一下,当我在键盘上按下ESC 时,弹出窗口会关闭。该功能有效,但是我想让我的测试通过。我不知道如何模拟keyDown 按下整个文档而不仅仅是模态弹出组件。
这是我现在的测试:
test("it should call the onKeyDown handler on key ESC press", () => {
const onKeydownSpy = jest.fn();
const component = mount(
<div id="wrapper">
<Modal
isOpen={false}
portalParent="#wrapper"
onClose={() => {}}
id="123"
>
<p>Modal</p>
</Modal>
</div>
);
component.simulate("keydown", { keyCode: 27 });
expect(onKeydownSpy).toHaveBeenCalledTimes(1);
expect(onKeydownSpy).toHaveBeenCalledWith(0);
});
这是我的代码:
const handleKeyDownEvent = useCallback(event => {
if (event.keyCode === 27) {
onClose();
}
}, []);
useEffect(() => {
if (isOpen) {
document.addEventListener("keydown", handleKeyDownEvent);
} else {
document.removeEventListener("keydown", handleKeyDownEvent);
}
}, [handleKeyDownEvent, isOpen]);
提前致谢,如果您需要更多信息,请告诉我
【问题讨论】:
标签: javascript reactjs unit-testing testing enzyme