我正在尝试对Angular Material提供的DataSource具有排序功能的组件进行单元测试。我的测试当前看起来如下:
it('should contain a sortable table', (done) => {
fixture.whenStable().then(() => {
fixture.detectChanges();
const tableRows = fixture.debugElement.nativeElement.querySelectorAll('tr');
const sortButtons = fixture.debugElement.nativeElement.querySelectorAll('button.mat-sort-header-button');
expect(sortButtons.length).toBe(2);
sortButtons[0].click();
fixture.detectChanges();
tableRows.forEach(row => {
console.log(row.cells[0].innerHTML);
});
done();
});
});
找到了排序按钮,并且单击也似乎可以正常工作,但是控制台中的输出与预期的不一样。它还没有更新。.
通过ng运行应用程序时,排序工作良好。但是,这里的排序无法按预期进行,或者我的测试似乎没有记录DOM中所做的更改?如何正确实施此测试?
排序功能如下:
this.dataSource.sortingDataAccessor = (item: DaResult, property: string) => {
switch (property) {
case 'da':
return item.da;
case 'currentcomponent':
return item.componentCurrent.partNumber;
default:
return item.da;
}
};