我需要测试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();
})
如何访问表行上的单击事件?
2条答案
按热度按时间q35jwt9p1#
必须在
td
类之前访问mat-table
如果尝试ngMocks.click('table td .clickable-link');
会发生什么juud5qan2#
使用mockbuilder时,您是否
.keep(MatTableModule)
?如果不这样做,它可能会被嘲笑,这意味着您的表可能不会被呈现。