typescript 无法触发未定义元素的单击事件

6ie5vjzr  于 2022-12-14  发布在  TypeScript
关注(0)|答案(2)|浏览(149)

我需要测试mat-table行上的click事件。

<table
    mat-table
    [dataSource]="dataSource"
    matSort
    matSortActive="formCode"
    matSortDirection="asc"
  >
    <caption></caption>
    <ng-container matColumnDef="isChecked">
      <th mat-header-cell *matHeaderCellDef></th>
      <td mat-cell *matCellDef="let row">
        <mat-checkbox
          (click)="$event.stopPropagation()"
          (change)="$event ? selection.toggle(row) : null"
          [checked]="selection.isSelected(row)"
        >
        </mat-checkbox>
      </td>
    </ng-container>
    <ng-container matColumnDef="code">
      <th mat-header-cell *matHeaderCellDef mat-sort-header>Référence</th>
      <td
        mat-cell
        *matCellDef="let element"
        class="clickable-link"
        (click)="openSummary(element.code)"
      >
        {{ element.code }}
      </td>
    </ng-container>
</table>

我尝试通过css查找一行,并执行以下操作:ngMocks.click('.clickable-link');或ngMocks.click('mat-checkbox'),但它返回undefined我已经尝试了fixture.debugElement.query(By.css('mat-checkbox')),但没有任何更改。这是我的spec.ts文件:

it('should open summary',async ()=>{  
     filesService.getFormByCode.and.returnValue(of(formList));
      ngMocks.click('.clickable-link');
       fixture.detectChanges();
       expect(filesService.getFormByCode).toHaveBeenCalled();
    })

如何访问表行上的单击事件?

q35jwt9p

q35jwt9p1#

必须在td类之前访问mat-table如果尝试ngMocks.click('table td .clickable-link');会发生什么

juud5qan

juud5qan2#

使用mockbuilder时,您是否.keep(MatTableModule)
如果不这样做,它可能会被嘲笑,这意味着您的表可能不会被呈现。

相关问题