首页 > 解决方案 > 在 Jest 中测试 onbeforeunload

问题描述

所以基本上我有一个 onbeforeunload 函数,如果他们决定重新加载或关闭选项卡,我会小心并警告用户。我的代码如下

  useEffect(() => {
   
    //this will prevent users from accidently refreshing / closing tab
    window.onbeforeunload = () => {
      return "Are you sure you want to do this yada yada yada yada?";
    };
  }, []);

我试图开玩笑地测试它,但 return 语句从未执行过。我的测试如下

window.location.reload();
expect(window.onbeforeunload).toHaveBeenCalled();

即使我模拟 onBeforeunload 它也不起作用。任何帮助都将不胜感激。谢谢。

标签: javascriptreactjsunit-testingjestjsgatsby

解决方案


您最好自己派发活动。

window.dispatchEvent(new Event("beforeunload"));

推荐阅读