Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 测试角度材质数据源排序_Angular_Jasmine_Angular Material_Karma Jasmine - Fatal编程技术网

Angular 测试角度材质数据源排序

Angular 测试角度材质数据源排序,angular,jasmine,angular-material,karma-jasmine,Angular,Jasmine,Angular Material,Karma Jasmine,我正在尝试对Angular Material提供的数据源的具有排序功能的组件进行单元测试。我的测试当前显示如下: it('should contain a sortable table', (done) => { fixture.whenStable().then(() => { fixture.detectChanges(); const tableRows = fixture.debugElement.nativeElement.querySele

我正在尝试对Angular Material提供的数据源的具有排序功能的组件进行单元测试。我的测试当前显示如下:

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();
    });
});
this.dataSource.sortingDataAccessor = (item: DaResult, property: string) => {
  switch (property) {
    case 'da':
      return item.da;
    case 'currentcomponent':
      return item.componentCurrent.partNumber;
    default:
      return item.da;
  }
};
排序按钮会被找到,单击也会像它看起来那样工作,但是控制台中的输出并不像预期的那样。它有点没有更新

通过ng serve运行应用程序时,排序效果良好。但是这里的排序没有按预期工作,或者我的测试似乎没有注册DOM中所做的更改?如何正确实施此测试

排序函数如下所示:

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();
    });
});
this.dataSource.sortingDataAccessor = (item: DaResult, property: string) => {
  switch (property) {
    case 'da':
      return item.da;
    case 'currentcomponent':
      return item.componentCurrent.partNumber;
    default:
      return item.da;
  }
};

你能展示排序功能吗?@PhilippEscher:你能在
排序
功能中加入一些
控制台。记录
,看看它是否是通过
从测试用例中触发的。点击()?请确认