首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法正确模拟Notification

无法正确模拟Notification
EN

Stack Overflow用户
提问于 2022-08-02 19:41:10
回答 1查看 47关注 0票数 1

我的setupTests.ts中有以下内容:

代码语言:javascript
复制
globalThis.Notification =  ({
    requestPermission: jest.fn(),
    permission: "granted",
} as unknown) as jest.Mocked<typeof Notification>

然而,在一个react项目中的jest测试中,我不断地得到这个错误:

代码语言:javascript
复制
TypeError: Notification is not a constructor

  21 | export function showNotification(title: string, notificationText: string) {
  22 |     if (Notification.permission === "granted") {
> 23 |         const notification = new Notification(title, {  // params});

如何正确地修复它以模拟Notification?

EN

回答 1

Stack Overflow用户

发布于 2022-08-05 21:37:44

我也面临着一个类似的问题。我使用下面的方法来模拟通知。Visual代码一直抱怨我模仿对象的方式,但是测试仍然运行得很完美。

我能够为close添加一个模拟函数,以后可以使用expect进行测试。

代码语言:javascript
复制
    const mockClose = jest.fn();

    global.Notification = jest.fn().mockImplementation(
      () =>
        (({
          close: mockClose,
        } as unknown) as Notification)
    );

    functionInCode(data); <--- Calls new Notification

    expect(global.Notification).toBeCalledTimes(1);
    expect(mockClose).toBeCalledTimes(1);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73212911

复制
相关文章

相似问题

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