用玩笑进行单元测试时,如何以角度模拟 ResizeObserver polyfill?

Dau*_*eDK 7 unit-testing jestjs angular

我的目标是在运行 jest 单元测试时在 Angular 应用程序中模拟resize-observer-polyfill

目前,我收到以下错误:

TypeError: resize_observer_polyfill_1.default is not a constructor
Run Code Online (Sandbox Code Playgroud)

我在这里发现了一个相关问题,因此尝试在组件旁边实现一个模拟。所以这就是我尝试过的

_mocks_/resizeObserver.ts

class ResizeObserver {
    observe() {
        // do nothing
    }
    unobserve() {
        // do nothing
    }
}
window.ResizeObserver = ResizeObserver;
export default ResizeObserver;
Run Code Online (Sandbox Code Playgroud)

然后在我的规范文件中导入它:

import ResizeObserver from './_mocks_/resizeObserver';
Run Code Online (Sandbox Code Playgroud)

但这并不能解决问题。

代码中,我像这样使用 polyfill:

import ResizeObserver from 'resize-observer-polyfill';
Run Code Online (Sandbox Code Playgroud)

这是一个非常令人沮丧的问题,所以我真的希望以某种方式解决这个问题。

Dmi*_*try 0

据我所知,您正在单元测试中导入模拟,但您没有使用它。您的单元测试文件顶部需要有类似以下内容:

import ResizeObserver from './_mocks_/resizeObserver';

jest.mock('resize-observer-polyfill', () => { return ResizeObserver; });
Run Code Online (Sandbox Code Playgroud)