我需要在垫子表行上测试单击事件。下面是我的垫子代码
<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();
})
如何在表的行上访问click event ?
您必须在td
类之前访问mat-table
如果您尝试ngMocks.click('table td .clickable-link');
使用mockbuilder时,您是否.keep(MatTableModule)
?
如果你不这样做,它可能会被嘲笑,这意味着你的表可能不会被渲染。