Angular ошибка тестирования при создании нового экземпляра внутри компонента - PullRequest
1 голос
/ 07 августа 2020

Пытаюсь сделать простой angular тест, просто жду, что компонент создан. Я использую эту библиотеку resize-Observer-polyfill для обработки изменения размера элемента в моем шаблоне, но похоже, что Jest не нравится, когда я пытаюсь создать новый экземпляр объекта ResizeObserver.

Вот код:

inline-gallery.component.ts

import {
  AfterViewInit,
  ChangeDetectorRef,
  Component,
  ElementRef,
  ViewChild,
} from '@angular/core';
import ResizeObserver from 'resize-observer-polyfill';

@Component({
  selector: 'app-inline-gallery',
  templateUrl: './inline-gallery.component.html',
  styleUrls: ['./inline-gallery.component.scss']
})
export class InlineGalleryComponent implements AfterViewInit {
  @ViewChild('viewport') viewport: ElementRef<HTMLDivElement>;

  constructor(private cd: ChangeDetectorRef) {}

  ngAfterViewInit(): void {
    const viewportObserver = new ResizeObserver(_ => {
      console.log('test');
    });
    viewportObserver.observe(this.viewport.nativeElement);
  }
}

inline-gallery.component .spe c .ts

import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { InlineGalleryComponent } from './inline-gallery.component';
import { I18nModule } from '../../../i18n/i18n.module';
import {PreventDefaultDirective} from '../../directives/prevent-default/prevent-default.directive';

describe('GalleryComponent', () => {
  let component: InlineGalleryComponent;
  let fixture: ComponentFixture<InlineGalleryComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [
        InlineGalleryComponent,
        PreventDefaultDirective
      ],
      imports: [
        I18nModule
      ]
    })
      .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(InlineGalleryComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });
});

Это ошибка при запуске теста:


 FAIL  src/app/shared/components/gallery/inline-gallery.component.spec.ts (5.678 s)
  GalleryComponent
    ✕ should create (345 ms)

  ● GalleryComponent › should create

    TypeError: resize_observer_polyfill_1.default is not a constructor

      30 | 
      31 |   ngAfterViewInit(): void {
    > 32 |     const viewportObserver = new ResizeObserver(_ => {
         |                              ^
      33 |       console.log('test');

      at InlineGalleryComponent.ngAfterViewInit (src/app/shared/components/gallery/inline-gallery.component.ts:32:30)
      at callProviderLifecycles (../packages/core/src/view/provider.ts:570:14)

...