首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在安装提示符事件之前响应测试库

在安装提示符事件之前响应测试库
EN

Stack Overflow用户
提问于 2022-02-05 12:43:38
回答 1查看 136关注 0票数 0

我有一个React组件,可以监听beforeinstallprompt事件来处理PWA应用程序的安装。它有一个这样的效果钩:

代码语言:javascript
复制
useEffect(() => {
    window.addEventListener('beforeinstallprompt', handleBeforeInstallPromptEvent);

    return () => {
      window.removeEventListener('beforeinstallprompt', handleBeforeInstallPromptEvent);
    };
  }, [handleBeforeInstallPromptEvent]);

处理程序handleBeforeInstallPromptEvent执行一些逻辑来显示一个横幅,如果还没有安装应用程序,请用户安装它。

为了测试这种行为,我创建了这个jest测试,但是它没有调用事件处理程序,因此也没有显示警报。

我是不是遗漏了什么?

代码语言:javascript
复制
it('should render install app alert if not yet installed', async () => {
    const event = createEvent('beforeinstallprompt', window, {
      userChoice: new Promise((res) => res({ outcome: 'accepted', platform: '' })),
      prompt: () => new Promise((res) => res(undefined)),
    });

    render(<InstallApp />);

    await act(async () => {
      fireEvent(window, event);
    });

    expect(screen.getByText(/Install app!/g)).toBeVisible();
  });
EN

回答 1

Stack Overflow用户

发布于 2022-02-05 13:00:10

我发现了问题。describe测试块具有此设置/解压配置,以防止捕获事件。

代码语言:javascript
复制
beforeAll(() => {
  window.addEventListener = jest.fn();
  window.removeEventListener = jest.fn();
});

afterAll(() => {
  (window.addEventListener as any).mockClear();
  (window.removeEventListener as any).mockClear();
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70998122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档