Тест Angular 10 с помощью @testing-библиотеки/метода атрибутов угловой (страницы) на мат-пагинаторе

#angular #unit-testing #angular-testing-library #mat-pagination

Вопрос:

У меня <mat-paginator> элемент работает нормально, я просто хочу знать, как, черт возьми, я могу протестировать getPaginatorData метод для (page) атрибута с помощью библиотеки @testing-library/угловой библиотеки?

 <mat-paginator
  #billingItemsPaginator
  [pageIndex]="paginatorObject.billingItems.pageIndex"
  [pageSize]="paginatorObject.billingItems.pageSize"
  [pageSizeOptions]="[6, 12]"
  (page)="getPaginatorData($event, 'billingItems')"
  showFirstLastButtons="true"
 >
</mat-paginator>
 

Это мой компонент

   billingItemsSource = new MatTableDataSource<any>();
  public billingItemsPaginator: MatPaginator;
  @ViewChild('billingItemsPaginator') set matBillingItemsPaginator(
    mp: MatPaginator
  ) {
    this.billingItemsPaginator = mp;
    this.billingItemsSource.paginator = this.billingItemsPaginator;
  }
 

Заранее спасибо.

Ответ №1:

Я все понял.

Мне нужно было сделать это в моем блоке перед началом:

    const { fixture } = await render(MyComponent, {
      excludeComponentDeclaration: true,
      imports: [
        RouterTestingModule,
        CoreModule,
        FormsModule,
        NoopAnimationsModule,
        MatAutocompleteModule,
        MatPaginatorModule,
        MatSortModule,
        MatTableModule,
        HttpClientTestingModule,
        MatTabsModule,
      ],
    });
    jest.runAllTimers();
    component = fixture.componentInstance as MyComponent;
 

должны let component; быть доступны во всем мире.

а затем запустите мой тест

     const pageObject = component.getPaginatorData(
      {
        length: 42,
        pageIndex: 1,
        pageSize: 6,
        previousPageIndex: 0,
      },
      'invoices'
    );

    expect(pageObject.pageIndex).toEqual(1);